我正在尝试使用图片记录器将图像写入画布...
绘制图像需要 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);