【发布时间】:2018-03-12 22:39:31
【问题描述】:
我想将用户在我的应用中选择的照片发送到 Firebase 存储。我有一个简单的类,其属性为_imageFile,设置如下:
File _imageFile;
_getImage() async {
var fileName = await ImagePicker.pickImage();
setState(() {
_imageFile = fileName;
});
}
之后我用这个代码发送照片:
final String rand1 = "${new Random().nextInt(10000)}";
final String rand2 = "${new Random().nextInt(10000)}";
final String rand3 = "${new Random().nextInt(10000)}";
final StorageReference ref = FirebaseStorage.instance.ref().child('${rand1}_${rand2}_${rand3}.jpg');
final StorageUploadTask uploadTask = ref.put(_imageFile);
final Uri downloadUrl = (await uploadTask.future).downloadUrl;
print(downloadUrl);
问题是照片通常非常大。 Flutter/Dart 中是否有任何方法可以在上传前压缩和调整照片大小?我可以接受质量损失。
【问题讨论】:
-
你可能想试试pub.dartlang.org/packages/image,这个我没试过,但是当你阅读文档你会发现你可以将图像编码成不同的格式并指定不同的压缩级别。跨度>
-
您可能需要检查 pub.dev/packages/uuid 是否在 firebase 上上传文件,因为使用随机数有时可能会发生冲突。
-
如果您喜欢 lutter web,请查看我的回答。 stackoverflow.com/questions/60728872/…
标签: firebase dart firebase-storage flutter