我有这种方法,可以将用户手机中的照片加载到内存中,调整大小并将其编码为JPEG:
List<int> processPersonProfilePhoto(File file) {
var rawPhoto = file.readAsBytesSync();
var jpg = Image.decodeJpg(rawPhoto);
jpg = Image.copyResize(jpg, 512);
return Image.encodeJpg(jpg, quality: 70);
}
我正在通过以下方法在单独的隔离上运行上述方法:
var jpgByteArray = await compute(processPersonProfilePhoto, file);
整个过程有时需要20到30秒(发布模式比调试还差),并且我在中高端设备上运行。
这是我要处理的软件包:
image: ^2.0.7
我在做什么错?如何改善呢?
PS ::我做了更多的调试,并意识到需要花费更长时间处理的那行是去尾的:
var jpg = Image.decodeJpg(rawPhoto);
答案 0 :(得分:1)
我发现这是一个图书馆问题。您可以在lib的github页面上跟踪问题,很多问题抱怨运行缓慢。 (https://github.com/brendan-duncan/image/issues/104)
在修复之前,请使用该库: https://pub.dartlang.org/packages/flutter_image_compress
编辑:现在看来该库已解决了RELEASE版本上的缓慢问题:https://github.com/brendan-duncan/image/issues/104#issuecomment-490794535