compress static method
Converts HEIC/WebP/PNG to JPEG when CompressParams.format is CompressFormat.jpeg
and applies optional resize. Uses EXIF-based orientation when autoCorrectionAngle is true.
Implementation
static Future<File?> compress({
required File image,
CompressParams compressParams = defaultCompress,
}) async {
final dir = await getTemporaryDirectory();
final ext = switch (compressParams.format) {
CompressFormat.jpeg => 'jpg',
CompressFormat.png => 'png',
CompressFormat.heic => 'heic',
CompressFormat.webp => 'webp',
};
final targetPath = '${dir.path}/compressed_${DateTime.now().millisecondsSinceEpoch}.$ext';
final compressedFile = await FlutterImageCompress.compressAndGetFile(
image.absolute.path,
targetPath,
quality: compressParams.quality,
minHeight: compressParams.targetHeight,
minWidth: compressParams.targetWidth,
autoCorrectionAngle: compressParams.autoCorrectionAngle,
format: compressParams.format,
keepExif: compressParams.keepExif,
);
if (compressedFile == null) {
debugPrint('Compression failed');
return null;
}
return File(compressedFile.path);
}