【Flutter】图片压缩flutter_image_compress

时间:2025-01-31 08:00:57
import 'dart:io'; import 'dart:typed_data'; import 'package:flutter_image_compress/flutter_image_compress.dart'; import 'package:path_provider/path_provider.dart' as path_provider; class ImageCompressUtil { /// 图片压缩 File -> File Future<File> imageCompressAndGetFile(File file) async { if (file.lengthSync() < 200 * 1024) { return file; } var quality = 100; if (file.lengthSync() > 4 * 1024 * 1024) { quality = 50; } else if (file.lengthSync() > 2 * 1024 * 1024) { quality = 60; } else if (file.lengthSync() > 1 * 1024 * 1024) { quality = 70; } else if (file.lengthSync() > 0.5 * 1024 * 1024) { quality = 80; } else if (file.lengthSync() > 0.25 * 1024 * 1024) { quality = 90; } var dir = await path_provider.getTemporaryDirectory(); var targetPath = dir.absolute.path +"/"+DateTime.now().millisecondsSinceEpoch.toString()+ ".jpg"; var result = await FlutterImageCompress.compressAndGetFile( file.absolute.path, targetPath, minWidth: 600, quality: quality, rotate: 0, ); print("压缩后:${() / 1024}"); print("压缩后:${() / 1024}"); return result; } /// 图片压缩 File -> Uint8List Future<Uint8List> imageCompressFile(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; } /// 图片压缩 Asset -> Uint8List Future<Uint8List> imageCompressAsset(String assetName) async { var list = await FlutterImageCompress.compressAssetImage( assetName, minHeight: 1920, minWidth: 1080, quality: 96, rotate: 180, ); return list; } /// 图片压缩 Uint8List -> 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; } }