Kam*_*icz 18 dart firebase flutter firebase-storage
我想将用户在我的应用中选择的照片发送到Firebase存储.我有一个简单的类属性_imageFile
,其设置如下:
File _imageFile;
_getImage() async {
var fileName = await ImagePicker.pickImage();
setState(() {
_imageFile = fileName;
});
}
Run Code Online (Sandbox Code Playgroud)
之后,我发送照片与此代码:
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);
Run Code Online (Sandbox Code Playgroud)
问题是照片通常非常大.在上传之前,Flutter/Dart中是否有任何压缩和调整照片大小的方法?我很好,质量下降.
Man*_*ans 25
我遇到了这个,并且能够使用Dart 图像包和路径提供程序完成压缩/调整大小.您可以查看dart 图像api和其他方法的示例以及更多帮助.
这是我做的:
File compressedImage = await ImagePicker.pickImage(source: ImageSource.camera, imageQuality: 85);
Run Code Online (Sandbox Code Playgroud)
然后我上传imageQuality
到firebase存储.您可以使用quality属性调整jpg保存的质量,在我的情况下,我选择85(满分100).
希望这可以帮助!如果您有任何疑问,请告诉我.
该image_picker插件是目前非常简单.可以直接添加用于指定所选图像的所需大小/质量的选项.如果您这样做,请发送拉货请求!
有很多解决方案:
您可以使用ImagePickerimageQuality
的内置属性来压缩图像。该属性采用和之间的值,表示原始图像质量的百分比。0
100
首先,将其添加image_picker
为 pubspec.yaml 文件中的依赖项。
用法
File _image;
Future getImage() async {
var image = await ImagePicker.pickImage(
source: ImageSource.gallery,
imageQuality: 25,
);
setState(() {
_image = image;
});
}
Run Code Online (Sandbox Code Playgroud)
这种方法的优点是它嵌入在 image_picker 包中,因此非常易于使用。
用于filterQuality
设置FilterQuality
图像的大小。
例子 :
Image.asset('assets/kab1.png', filterQuality: FilterQuality.high,),
Run Code Online (Sandbox Code Playgroud)
这些属性存在于AssetImage
、NetworkImage
和FileImage
中MemoryImage
。
您还可以简单地调整图像大小(调整图像大小可以压缩它)。为此,请尝试ResizeImage小部件
另一种解决方案是使用flutter_image_compress包
使用image_picker插件并调用选择图像函数作为
Future<File> imageFile = ImagePicker.pickImage(source: ImageSource.gallery , maxHeight: 200 , maxWidth: 200 );
将 maxHeight 和 maxWidth 更改为您需要的任何图像大小。
归档时间: |
|
查看次数: |
11061 次 |
最近记录: |