Flutter 图片压缩工具有是有,但是真的太少了,国内的Flutter才刚入门级,很多东西难找资料,分享一个贼好用的图片压缩工具!
flutter_native_image: ^0.0.5;//图片压缩工具
flutter_absolute_path: ^1.0.6;//路径转换工具
multi_image_picker: ^4.6.7;//多图选择器
用法:可以查看Flutter pub网站,
eg: File compressedFile = await FlutterNativeImage.compressImage(filePath,
quality: 70, percentage: 50); 最简单用法 图片路径 压缩质量 比列
为什么说与多图选择上传更配?
很多人的多图选择器用的库是这个:
multi_image_picker: ^4.6.7
用法大家都能搜到:
List<Asset> resultList = List<Asset>();
String error = 'No Error Dectected';
ImageBean imageBean;
try {
resultList = await MultiImagePicker.pickImages(
maxImages: 9,//最大选择数
enableCamera: true,//是否开启相机
cupertinoOptions: CupertinoOptions(takePhotoIcon: "chat"),
materialOptions: MaterialOptions(
actionBarColor: "#abcdef",
actionBarTitle: "Example App",
allViewTitle: "All Photos",
useDetailsView: true,
selectCircleStrokeColor: "#000000",
),
);
} on Exception catch (e) {
error = e.toString();
}
直接返回的是 List<Asset> resultList = List<Asset>();
_identifier 图片路径
_name 图片名称
_originalWidth 资源图片宽度
_originalHeight 资源图片高度
我们需要把Asset 里面的图片路径转换成本地手机里面的路径,用路径转换工具
//获取图片路径
String filePath = await FlutterAbsolutePath.getAbsolutePath(assets.identifier);
//图片直接压缩
File compressedFile = await FlutterNativeImage.compressImage(filePath,
quality: 70, percentage: 50);
这样就能直接获取,几行代码搞定。
其余的luban等压缩工具,其中的路径转换很繁琐,对于新手而言,项目时间又紧没有太多时间去研究,直接用上吧,只要有图片上传工能,图片要是不压缩,你们的服务器到底有多牛逼!