Upa*_*Jah 6 android-canvas flutter flutter-layout flutter-animation
我正在尝试使用图片记录器将图像写入画布...
drawImage 需要 dart:ui 图像
我已成功导入资产图像,但网络图像出现以下错误:
[VERBOSE-2:codec.cc(97)] 解码图像失败。数据无效,或使用不受支持的格式编码。
[VERBOSE-2:shell.cc(186)] Dart 错误:未处理的异常:异常:操作失败 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;
});
});
});
});
});
Run Code Online (Sandbox Code Playgroud)
Mr *_*ial 10
我遇到了同样的问题。我通过如下代码片段解决了它:
...
Future<ui.Image> getImage(String path) async {
Completer<ImageInfo> completer = Completer();
var img = new NetworkImage(path);
img.resolve(ImageConfiguration()).addListener(ImageStreamListener((ImageInfo info,bool _){
completer.complete(info);
}));
ImageInfo imageInfo = await completer.future;
return imageInfo.image;
}
....
Run Code Online (Sandbox Code Playgroud)
来自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;
//// });
//// });
// });
});
});
Run Code Online (Sandbox Code Playgroud)
进而..
c.drawImage(imageInfo.image, offset3, paint);
Run Code Online (Sandbox Code Playgroud)