flutter图片压缩到指定大小【兼容Android、IOS】,例如 0.5MB
设置一个初始的压缩质量 quality 值为 90(可自定义)。
然后使用while 循环,只要图片的大小超过我们的目标大小(0.5MB),就一直压缩,直到小于 0.5MB
调用方法:
String path = await compressImage(pickedFile.path);
导入了必要的库文件
import 'dart:io';
import 'package:flutter_image_compress/flutter_image_compress.dart';
compressImage方法:
// 异步方法,压缩图片到指定大小
static Future<List<int>> compressImage(String mirrorImage) async {
try {
List<int> imageBytes = await File(mirrorImage).readAsBytes();
print("图片初始大小:${imageBytes.length / 1024 / 1024}MB");
// 控制压缩后图片大小,不得超过0.5MB
int quality = 90;
while (imageBytes.length > 1024 * 1024 * 0.5 && quality > 0) {
imageBytes = await FlutterImageCompress.compressWithList(
imageBytes,
quality: quality,
);
print('压缩后大小: ${imageBytes.length / 1024 / 1024}MB');
quality -= 2;
}
return imageBytes;
} catch (e) {
// 处理异常情况
print('压缩图片出错:$e');
return null;
}
}