Flutter: как я могу закодировать ui.Image как jpeg?

Мне нужно сделать что-то вроде adapter. Я получаю как in параметр, и я должен отправить outUint8List. На данный момент я обнаружил, как можно преобразовать в данные, но для этого потребовался очень большой объем памяти.

Например, если я беру файл размером 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? Какие-либо предложения?

0 ответов

Другие вопросы по тегам