compressImage static method

Future<File> compressImage(
  1. File file, {
  2. int quality = 50,
})

Compresses an image and returns the compressed file.

Implementation

static Future<File> compressImage(File file, {int quality = 50}) async {
  try {
    final dir = await getTemporaryDirectory();
    final ext = file.path.toLowerCase().endsWith('.png') ? '.png' : '.jpg';
    final format = ext == '.png' ? CompressFormat.png : CompressFormat.jpeg;
    final targetPath = '${dir.path}/${const Uuid().v4()}_compressed$ext';

    final result = await FlutterImageCompress.compressAndGetFile(
      file.absolute.path,
      targetPath,
      quality: quality,
      minWidth: 1024,
      minHeight: 1024,
      format: format,
    );

    if (result != null) {
      return File(result.path);
    }
  } catch (e) {
    log('Error compressing image: $e');
  }
  return file;
}