Конвертировать CameraImage в ui.Image во флаттере - PullRequest
1 голос
/ 25 апреля 2020

[править] Проблема в том, что код, который я пытаюсь использовать, не работает внутри изолята. Когда я пробую ту же оду за пределами изоли, это работает. Так что, вероятно, следует проверить проблемы на GitHub Flutter или Submut Nex. [edit2] не нашел проблему для этого, только что отправил: https://github.com/flutter/flutter/issues/55654

Я могу преобразовать CameraImage в png с этим куском кода ( https://gist.github.com/Alby-o/fe87e35bc21d534c8220aed7df028e03), а затем отобразите png с виджетом Image, но преобразование png очень медленное. Я хотел бы преобразовать CameraImage в ui.Image, а затем использовать виджет RawImage для его отображения. Это звучит возможно. Но когда я пробую этот фрагмент кода, я получаю сообщение об ошибке в строке ui.decodeImageFromPixels:

Future<ui.Image> makeUiImage(List<int> pixels,int width,int height) {
  final c = Completer<ui.Image>();
  ui.decodeImageFromPixels(
    pixels,
    width,
    height,
    ui.PixelFormat.rgba8888,
    c.complete,
  );
  return c.future;
}
Future<ui.Image> convertCameraImageToUiImage(CameraImage image) async {
  int startTime = DateTime.now().millisecondsSinceEpoch;
  int time;
  imglib.Image img = convertCameraImage(image);
  time = DateTime.now().millisecondsSinceEpoch;
  print("Converted in "+(time-startTime).toString()+"ms img "+img.toString()+" ("+img.width.toString()+","+img.height.toString()+")");
  startTime=time;

  ui.Image ret = await makeUiImage(img.getBytes(), image.width, image.height);
  return ret;
}

E / flutter (1194): [ОШИБКА: flutter / runtime / dart_isolate. cc (915)]

Необработанное исключение: E / flutter (1194): ошибка: нативная функция 'instantiateImageCode c' (5 аргументов) не может быть найдена

E / флаттер (1194): # 0 decodeImageFromPixels.

(дартс: ui / painting.dart: 1740: 36) E / флаттер (1194): # 1 _futurize

(дарт: ui /painting.dart:4296:34) E / флаттер (1194): # 2

decodeImageFromPixels (дарт: ui / painting.dart: 1739: 37) E / флаттер (

1194) : # 3 makeUiImage

(пакет: flutterapp / utils / image_converter.dart: 37: 3) E / flutter (

1194): # 4 convertCameraImageToUiImage

(пакет: flutterapp / utils / image_converter.dart: 54: 24) E / flutter (

1194): # 5 processCameraImageIsolate.

(пакет: flutterapp / cameraoverlay2.dart: 448: 5) E / флаттер (1194): # 6

_RootZone.r unUnaryGuarded (dart: async / zone.dart: 1316: 10) E / flutter (1194): # 7
_BufferingStreamSubscription._sendData

(dart: async / stream_impl.dart: 338: 11) E / трепетание (1194): # 8

_BufferingStreamSubscription._add (dart: async / stream_impl.dart: 265: 7) E / трепетание (1194): # 9 _SyncStreamControllerDispatch._sendData

( async / stream_controller.dart: 766: 19) E / flutter (1194): # 10

_StreamController._add (dart: async / stream_controller.dart: 642: 7) E / flutter (1194): # 11 _StreamController.add

(dart: async / stream_controller.dart: 588: 5) E / flutter (1194): # 12
_RawReceivePortImpl._handleMessage (dart: isolate-patch / isolate_patch.dart: 174: 12)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...