flutter压缩图片上传
前言:在android原生中比较常用的是luban压缩,当然,flutter版本也有luban压缩,通过一些资料搜索,luban压缩是直接通过dart进行压缩的,在针对一些大图片,动不动就12-20m的图片,在部分旧手机的会直接出现闪退的情况。当然,上面说得可能也不一定正确,下面我自己使用的是pub上比较popular的插件:flutter_image_compress: ^0.7.0使用方式:p
·
前言:
在android原生中比较常用的是luban压缩,当然,flutter版本也有luban压缩,
通过一些资料搜索,luban压缩是直接通过dart进行压缩的,在针对一些大图片,动不动就12-20m的图片,在部分旧手机的会直接出现闪退的情况。
当然,上面说得可能也不一定正确,下面我自己使用的是pub上比较popular的插件:flutter_image_compress: ^0.7.0
使用方式:
-
pubspec.yaml 添加依赖,如下:

-
使用命令:
pub packages get -
在上传的地方使用代码:
Utils.showLoading(context, text: '正在压缩上传中,请耐心等待....');
for (File item in assets) {
final Directory _temp = await getTemporaryDirectory();
final String _path = _temp.path;
var path = item.path;
var name = path.substring(path.lastIndexOf("/") + 1, path.length);
FlutterImageCompress.compressAndGetFile(
path, '$_path/img_$name.jpg',
quality: 88,
// format: format
).then((value) {
uploads.add(value);
upload(value);
});
}
更多压缩方式如下:
// 1. compress file and get Uint8List
Future<Uint8List> testCompressFile(File file) async {
var result = await FlutterImageCompress.compressWithFile(
file.absolute.path,
minWidth: 2300,
minHeight: 1500,
quality: 94,
rotate: 90,
);
print(file.lengthSync());
print(result.length);
return result;
}
// 2. compress file and get file.
Future<File> testCompressAndGetFile(File file, String targetPath) async {
var result = await FlutterImageCompress.compressAndGetFile(
file.absolute.path, targetPath,
quality: 88,
rotate: 180,
);
print(file.lengthSync());
print(result.lengthSync());
return result;
}
// 3. compress asset and get Uint8List.
Future<Uint8List> testCompressAsset(String assetName) async {
var list = await FlutterImageCompress.compressAssetImage(
assetName,
minHeight: 1920,
minWidth: 1080,
quality: 96,
rotate: 180,
);
return list;
}
// 4. compress Uint8List and get another Uint8List.
Future<Uint8List> testComporessList(Uint8List list) async {
var result = await FlutterImageCompress.compressWithList(
list,
minHeight: 1920,
minWidth: 1080,
quality: 96,
rotate: 135,
);
print(list.length);
print(result.length);
return result;
}
更多:
关注下面公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。
在微信后台回复「130个小程序」,即可免费领取享有导入就能跑的微信小程序
qq加油小程序
更多推荐


所有评论(0)