我尝试在使用 flutter image_picker 包上传到存储之前压缩图像。我找到了三种方法来做到这一点,但我不确定哪种方法是最好的。
这些选项之间有什么区别吗?
感谢任何帮助和解释。
Joe*_*ler 36
以下是潜在解决方案的细分。TLDR 是 flutter_image_compress 包比 ImagePicker 类本身更能压缩文件。
图像选择器
正如其他人所建议的,您可以使用 ImagePicker 的内置 imaqeQuality 属性来压缩图像。此属性采用 0 到 100 之间的值,表示原始图像质量的百分比。这种方法的好处是它内置在 image_picker 包中,因此非常容易使用。
File _image;
Future getImage() async {
var image = await ImagePicker.pickImage(
source: ImageSource.gallery,
imageQuality: 25,
);
setState(() {
_image = image;
});
}
Run Code Online (Sandbox Code Playgroud)
我做了一个小测试,看看各种值对图像大小的影响有多大:
总之,您可以将图像的文件大小减少一半以上,而不会产生太大的明显差异。试图将图像质量强制为 0% 实际上并不会缩小文件大小。
flutter_image_compress
的flutter_image_compress包是使用相当简单,它似乎要好得多,在实际上减少了文件大小。
Future<File> compressFile(File file) async {
final filePath = file.absolute.path;
// Create output file path
// eg:- "Volume/VM/abcd_out.jpeg"
final lastIndex = filePath.lastIndexOf(new RegExp(r'.jp'));
final splitted = filePath.substring(0, (lastIndex));
final outPath = "${splitted}_out${filePath.substring(lastIndex)}";
var result = await FlutterImageCompress.compressAndGetFile(
file.absolute.path, outPath,
quality: 5,
);
print(file.lengthSync());
print(result.lengthSync());
return result;
}
Run Code Online (Sandbox Code Playgroud)
我将省略这里的图像,因为它们看起来都一样:
50% 图像质量 - 590KB
25% 图像质量 - 276KB
5% 图像质量 - 211KB
flutter_native_image就文件大小而言
,flutter_native_image包与flutter_image_compress包相当。
Future<File> compressFile(File file) async{
File compressedFile = await FlutterNativeImage.compressImage(file.path,
quality: 5,);
return compressedFile;
}
Run Code Online (Sandbox Code Playgroud)
50% 图像质量 - 1.02MB
25% 图像质量 - 309KB
5% 图像质量 - 204KB
我想这种方法的好处之一是您不需要为其提供压缩文件的输出路径。
Ουι*_*ευα 13
我构建了一个应用程序,它使用三个包来压缩图像文件:flutter_image_compress、flutter_native_image和flutter_luban。在比较了这些包之后,我可以说flutter_image_compress是迄今为止最好的图像压缩工具。
我的应用程序受到@Joe_Muller 的回复的启发,源代码在这里

图像选择器
使用图像选择器,您可以轻松高效地设置图像质量,如下所示
File _image;
Future getImage() async {
var image = await ImagePicker.pickImage(
source: ImageSource.camera, imageQuality: 50);
setState(() {
_image = image;
});
}
Run Code Online (Sandbox Code Playgroud)
图像质量百分比 100 是最高的
| 归档时间: |
|
| 查看次数: |
15369 次 |
| 最近记录: |