flutter - Flutter Image.memory 加载显示什么
问题描述
基本上,我试图通过将灰度图像转换为全彩色图像来制作动画。全彩图像是这样加载的:
ByteData bytes = await rootBundle.load("...");
ui.Codec codec = await ui.instantiateImageCodec(bytes.buffer.asUint8List());
ui.FrameInfo fi = await codec.getNextFrame();
return (await fi.image.toByteData()).buffer.asUint8List();
在动画小部件中,我所做的只是将部分图像数据更改为灰度,其余部分保持不变。这个问题是当我以这种方式将字节转换为图像小部件时:
return Image.memory(
imglib.encodePng(imglib.Image.fromBytes(
widget.rawWidth, widget.rawHeight, p)));
p 是原始图片中字节的修改版本。然而,屏幕上什么也没有出现。并打电话
return Image.memory(p);
由于缺少元数据,将在 instantiateCodec 失败时触发异常。有关如何解决此问题的任何想法?
解决方案
好吧,我想办法摆脱它。对于上面的这个问题,我猜这是由于图像操作缓慢和显示速度低于 60 帧/秒造成的。我所做的是通过动画值构建带有前图像剪辑的堆栈。