在 Flutter 中,可以使用内置的 dart:ui
库提供的图片处理和压缩功能来进行图片压缩。
首先,确保在 pubspec.yaml
文件中的 dependencies
部分添加了 flutter_image_compress
包的引用:
dependencies:
flutter_image_compress: ^1.0.0
然后,运行 flutter packages get
命令来获取包。
接下来,可以使用 flutter_image_compress
包提供的方法来压缩图片。
import 'dart:io';
import 'package:flutter_image_compress/flutter_image_compress.dart';
// 压缩图片方法
Future<File> compressImage(File file, String targetPath) async {
var result = await FlutterImageCompress.compressAndGetFile(
file.absolute.path,
targetPath,
quality: 75,
format: CompressFormat.jpeg,
);
return result;
}
// 示例用法
void compressExample() async {
File imageFile = File('/path/to/image.jpg');
String targetPath = '/path/to/compressed_image.jpg';
File compressedFile = await compressImage(imageFile, targetPath);
print('Compressed file size: ${compressedFile.lengthSync()}');
}
在上述示例中,compressImage
方法接受一个 File
对象和目标路径作为参数,并通过调用 FlutterImageCompress.compressAndGetFile
方法来压缩图片。可以通过调整 quality
参数来控制压缩质量,范围为 0-100。format
参数指定了输出的图片格式,可选值有 CompressFormat.jpeg
和 CompressFormat.png
。
压缩完成后,可以通过 compressedFile
对象获取压缩后的图片文件,然后可以根据需要进行进一步的处理或上传等操作。
注意,flutter_image_compress
包使用了 native 代码,因此需要确保项目的 iOS 和 Android 配置正确,以便与 native 代码进行交互。