我有这种方法,将用户手机中的照片加载到内存中,调整大小并将其编码为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);