encodeOnce method

  1. @override
Future<EncodeResult> encodeOnce(
  1. EncodeRequest request
)
override

Encode request exactly once and return the resulting bytes plus decoded dimensions. Backends must decode at a reduced size when maxWidth/ maxHeight are set (downsample-on-decode) to avoid loading huge bitmaps into memory.

Implementation

@override
Future<EncodeResult> encodeOnce(EncodeRequest request) async {
  final mime = _mime(request.format);
  if (mime == null) throw UnsupportedFormatError(request.format);
  final canvas = await _draw(
    request.bytes,
    request.autoOrient,
    request.maxWidth,
    request.maxHeight,
  );
  final bytes = await _encode(canvas, request.format, mime, request.quality);
  return EncodeResult(
    bytes: bytes,
    width: canvas.width,
    height: canvas.height,
    usedQuality: request.quality,
    reachedTarget: true,
  );
}