如何获取用户界面.来自网络图像的图像(dart:ui)



我正在尝试使用图片记录器将图像写入画布...

绘制图像需要 dart:ui 图像

我已成功导入资产图像,但网络图像出现以下错误:

[详细 2:编解码器.cc(97)] 解码图像失败。数据是 无效,或者使用不受支持的格式进行编码。

[详细-2:shell.cc(186)] 飞镖错误: 未处理的异常: 异常: 操作失败 0 _rootHandleUncaughtError。(dart:async/zone.dart:1112:29) 1 _microtaskLoop (dart:async/schedule_microtask.dart:41:21) 2 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)

到目前为止尝试的代码..

netImage.obtainKey(new ImageConfiguration()).then((val) {
  var load = netImage.load(val);
  load.addListener((listener, err) async {
    ImageInfo imageInfo;
    setState(() => imageInfo = listener);
    imageInfo.image.toByteData().then((ss) {
      Uint8List lst = new Uint8List.view(ss.buffer);
      ui.instantiateImageCodec(lst).then((val) {
        val.getNextFrame().then((vaal) {
          imagetoDraw = vaal.image;
        });
      });
    });
  });
});

我遇到了同样的问题。我通过代码片段解决了它,如下所示:

Future<ui.Image> getImage(String path) async {
  var completer = Completer<ImageInfo>();
  var img = new NetworkImage(path);
  img.resolve(const ImageConfiguration()).addListener(ImageStreamListener((info, _) {
    completer.complete(info);
  }));
  ImageInfo imageInfo = await completer.future;
  return imageInfo.image;
}

来自 https://github.com/flutter/flutter/issues/23761

    netImage.obtainKey(new ImageConfiguration()).then((val) {
      var load = netImage.load(val);
      load.addListener((listener, err) async {
        setState(() => imageInfo = listener);
//        imageInfo.image.toByteData().then((ss) {
//
//          Uint8List lst = new Uint8List.view(ss.buffer);
//
////          ui.instantiateImageCodec(lst).then((val) {
////            val.getNextFrame().then((vaal) {
////              imagetoDraw = vaal.image;
////            });
////          });
//        });
      });
    });

然后。。

c.drawImage(imageInfo.image, offset3, paint);

最新更新