Создание необработанного изображения из виджета или холста

Моя конечная цель заключается в том, чтобы иметь возможность обмениваться динамическим изображением, передавая необработанные данные изображения или сохраняя изображение на диск для предоставления собственной службы Android/ IOS. Как бы я конвертировать Widget или же Canvas в флаттер к необработанным данным изображения (например, byte[])?

3 ответа

Решение

Сейчас это поддерживается. Вы можете использовать RenderRepaintBoundry или же OffsetLayer или же Scene, У них всех есть toImage, Вот ссылка на RederRepaintBoundry.toImage()

  Future<void> _capturePng() async {
    RenderRepaintBoundary boundary = globalKey.currentContext.findRenderObject();
    ui.Image image = await boundary.toImage();
    ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
    Uint8List pngBytes = byteData.buffer.asUint8List();
    print(pngBytes);
  }

Это скопировано из документов.

Вы также можете знать, что в данный момент вам нужно переключиться на dev канал как beta еще не слито. Если вам нужно переключиться, запустите:

flutter channel dev
flutter upgrade

Вы можете использовать Screenshot package получить image принадлежащий widget ты хочешь.

https://pub.dev/packages/screenshot

В настоящее время это невозможно из кода Dart, запущенного сегодня во FlutterView, однако у нас есть ошибка при отслеживании файлов, реализующая такую ​​систему: https://github.com/flutter/flutter/issues/6774

Можно визуализировать виджеты Flutter как часть FlutterView, а затем использовать интерфейсы Java или Objective-C для FlutterView для захвата изображения, например стандартную android.View.getBitmap, которую реализует FlutterView: https://docs.flutter.io/javadoc/io/flutter/view/FlutterView.html

Если это важно для нужд вашего приложения и вы хотели бы иметь возможность захватывать растровые изображения деревьев виджетов из кода Dart, мы хотели бы услышать об этом. Пожалуйста, примите во внимание, чтобы предоставить дополнительный контекст по вышеуказанной проблеме!

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