Flutter: как я могу закодировать ui.Image как jpeg?
Мне нужно сделать что-то вроде
adapter
. Я получаю как
in
параметр, и я должен отправить
out
Uint8List. На данный момент я обнаружил, как можно преобразовать в данные, но для этого потребовался очень большой объем памяти.
Например, если я беру файл размером 2,6 МБ на диске, читаю его как, а затем пытаюсь преобразовать его обратно в данные, используя
toByteData(.png)
, в результате у меня на диске 11,45 МБ.
Мой код
/// Encode each page from [ui.Image] to data [Uint8List].
///
/// throw [ImageEncodeException] when one of [pages] can't encode.
@visibleForTesting
Future<List<Uint8List>> encodePages(List<ui.Image> pages) {
return Future.wait(pages.map((ui.Image page) async {
final ByteData? byte =
await page.toByteData(format: ui.ImageByteFormat.png);
if (byte == null) {
throw const ImageEncodeException();
}
return byte.buffer.asUint8List();
}));
}
В emum
ImageByteFormat
я вижу только
rawRgba
,
rawUnmodified
, а также
png
. Итак, как я могу конвертировать
ui.Image
в данные jpeg? Какие-либо предложения?