我想在上传到我的Firestore之前做一些图像压缩,并遇到了以下线程:Flutter & Firebase: Compression before upload image
上传工作完全正常,但我无法识别关于文件大小的任何压缩...即使我将质量从85降低到1,文件仍然具有相同的大小。如果我上传图像时根本不调用压缩方法,情况也是一样。以下是代码片段:
void compressImage() async {
print('starting compression');
final tempDir = await getTemporaryDirectory();
final path = tempDir.path;
int rand = new Math.Random().nextInt(10000);
Im.Image image = Im.decodeImage(file.readAsBytesSync());
Im.copyResize(image, 500);
// image.format = Im.Image.RGBA;
// Im.Image newim = Im.remapColors(image, alpha: Im.LUMINANCE);
Im.Image smallerImage = Im.copyResize(image, 500); // choose the size here, it will maintain aspect ratio
var newim2 = new File('$path/img_$rand.jpg')
..writeAsBytesSync(Im.encodeJpg(smallerImage, quality: 85));
setState(() {
file = newim2;
});
print('done');
}你知道我需要做些什么,才能让压缩生效吗?
诚挚的问候!
发布于 2019-05-20 20:02:46
你可以使用下面的插件,同样可以正常工作,没有任何问题,甚至更快,和我期望的一样
https://github.com/btastic/flutter_native_image.git
以上链接中提供的步骤和方法。
https://stackoverflow.com/questions/55450615
复制相似问题