Flutter Web 上的图像压缩时间太长
Image compression takes too long on Flutter Web
我尝试使用以下代码(使用 image_compression_flutter 包)压缩网络图像,但是压缩 6 mb 图像大约需要 1 分钟。
Future<Uint8List?> compressImage(Uint8List imgBytes,
{required String path, int quality = 70}) async {
final input = ImageFile(
rawBytes: imgBytes,
filePath: path,
);
Configuration config = Configuration(
outputType: ImageOutputType.jpg,
// can only be true for Android and iOS while using ImageOutputType.jpg or ImageOutputType.pngÏ
useJpgPngNativeCompressor: false,
// set quality between 0-100
quality: quality,
);
final param = ImageFileConfiguration(input: input, config: config);
final output = await compressor.compress(param);
return output.rawBytes;
}
是不是因为网络限制,压缩了这么长时间?
关于这个问题有什么解决方法
最终,我找到了压缩网页图片的解决方案。图像选择器现在有 XFile 类型,可以直接在 web 中压缩。将一张12mb的图片压缩到50kb用了大约2秒
final XFile? pickedImageFile = await ImagePicker().pickImage(
source: isCamera ? ImageSource.camera : ImageSource.gallery,
imageQuality: imageQuality,
maxWidth: maxWidth,
preferredCameraDevice: CameraDevice.rear);
上传到服务器时无需将 XFile 转换为任何类型。只需要从 pickedImageFile
读取字节
await pickedImageFile.readAsBytes();
我尝试使用以下代码(使用 image_compression_flutter 包)压缩网络图像,但是压缩 6 mb 图像大约需要 1 分钟。
Future<Uint8List?> compressImage(Uint8List imgBytes,
{required String path, int quality = 70}) async {
final input = ImageFile(
rawBytes: imgBytes,
filePath: path,
);
Configuration config = Configuration(
outputType: ImageOutputType.jpg,
// can only be true for Android and iOS while using ImageOutputType.jpg or ImageOutputType.pngÏ
useJpgPngNativeCompressor: false,
// set quality between 0-100
quality: quality,
);
final param = ImageFileConfiguration(input: input, config: config);
final output = await compressor.compress(param);
return output.rawBytes;
}
是不是因为网络限制,压缩了这么长时间? 关于这个问题有什么解决方法
最终,我找到了压缩网页图片的解决方案。图像选择器现在有 XFile 类型,可以直接在 web 中压缩。将一张12mb的图片压缩到50kb用了大约2秒
final XFile? pickedImageFile = await ImagePicker().pickImage(
source: isCamera ? ImageSource.camera : ImageSource.gallery,
imageQuality: imageQuality,
maxWidth: maxWidth,
preferredCameraDevice: CameraDevice.rear);
上传到服务器时无需将 XFile 转换为任何类型。只需要从 pickedImageFile
读取字节 await pickedImageFile.readAsBytes();