encodeOnce method
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,
);
}