compressImage method

  1. @override
Future<ImageCompressResult> compressImage(
  1. String path,
  2. ImageCompressConfig config,
  3. String? outputDir,
  4. String? outputName,
)
override

Implementation

@override
Future<ImageCompressResult> compressImage(
  String path,
  ImageCompressConfig config,
  String? outputDir,
  String? outputName,
) async {
  // Web output is a blob: URL; outputDir/outputName don't apply. A null
  // config.format tells the JS engine to keep the source's format.
  await _ensureImageLoaded();
  try {
    final cfg = config.toMap().jsify()! as JSObject;
    final res = (await _jsCompressImage(path, cfg).toDart).dartify() as Map;
    return ImageCompressResult.fromMap(res.cast<dynamic, dynamic>());
  } catch (e) {
    throw ImageCompressException('image_compress_failed', e.toString());
  }
}