compress method

Future<void> compress(
  1. String filename
)

Implementation

Future<void> compress(String filename) async {
  final file = File(filename);
  final bytes = await file.readAsBytes();
  final image = img.decodeImage(bytes)!;
  final fileType = _getFileExt(filename);
  if (!_validate(fileType)) {

    return;
  }
  switch (fileType) {
      case "jpg":
      case "jpeg": {
        final compressed = img.encodeJpg(image, quality: quality);
        await File(filename).writeAsBytes(compressed);
        break;
      }
      case "png": {
        // level: min = 0, max = 9, default = 6
        final compressed = img.encodePng(image, level: _round());
        await File(filename).writeAsBytes(compressed);
        break;
      }
      case "gif": {
        final compressed = img.encodeGif(image);
        await File(filename).writeAsBytes(compressed);
        break;
      }
      case "bmp": {
        final compressed = img.encodeBmp(image);
        await File(filename).writeAsBytes(compressed);
        break;
      }
      case "tga": {
         final compressed = img.encodeTga(image);
         await File(filename).writeAsBytes(compressed);
         break;
      }
      case "tiff": {
         final compressed = img.encodeTiff(image);
         await File(filename).writeAsBytes(compressed);
         break;
      }
      default: {
        // No op...
        return;
      }
  }
}