encodeImage method
Returns the stored image encoded with the given options.
Implementation
Uint8List encodeImage({EncodeImageOptions? options}) {
if (_buffer != null && options == null) {
return _buffer!;
}
options ??= EncodeImageOptions();
return using((Arena arena) {
Pointer<Utf8> pUUID = uniqueId!.toNativeUtf8(allocator: arena);
Pointer<CEncodeImageOptions> pConfig = arena<CEncodeImageOptions>();
EncodeImageOptions resolvedOptions = options ?? EncodeImageOptions();
pConfig.ref.format = resolvedOptions.format.index;
pConfig.ref.quality = resolvedOptions.quality;
Pointer<Opaque> opaqueBuffer = _nativeEncodeImage(pUUID, pConfig);
Pointer<Uint8> pData = _nativeOpaqueBufferDataGetter(opaqueBuffer);
int size = _nativeOpaqueBufferSizeGetter(opaqueBuffer);
// TODO use finalizer and prevent copying as soon as min sdk >= 3.1
Uint8List view = pData.asTypedList(size);
Uint8List ret = Uint8List(view.length);
ret.setAll(0, view);
_nativeOpaqueBufferFree(opaqueBuffer);
return ret;
});
}