首页 > 解决方案 > 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 失败时触发异常。有关如何解决此问题的任何想法?

标签: flutterflutter-animation

解决方案


好吧,我想办法摆脱它。对于上面的这个问题,我猜这是由于图像操作缓慢和显示速度低于 60 帧/秒造成的。我所做的是通过动画值构建带有前图像剪辑的堆栈。


推荐阅读