【问题标题】:Converting a plain Uint8List to image widget将普通的 Uint8List 转换为图像小部件
【发布时间】:2021-08-24 11:51:31
【问题描述】:

我是 Flutter 的新手,我有一个关于我的一个小项目的问题。

我正在尝试显示我通过套接字接收到的图像。 我有一个 Uint8List 代表图像矩阵(未以任何方式编码),并且我已成功将其转换为 Image 小部件,代码如下:

Image im = Image.fromBytes(1280, 1024, frameData, format: Format.luminance);
var jpgImage = encodeJpg(im);
.
.
//In Widget:
return Image.memory(jpgImage, gaplessPlayback: true);

它可以工作,但需要太多时间。 我看到 encodeJpg 函数至少需要 150 毫秒,这对我来说太长了,因为每个这样的图像都是流视频的一部分。

我的问题是,如何以最有效的方式将一个普通的(未编码的)Uint8List(表示一个常规矩阵、0-256 值)转换为一个 Image 小部件?

谢谢!

【问题讨论】:

标签: image flutter dart


【解决方案1】:

图像小部件的构造函数很少,其中之一就是内存。

检查Image.memory(bytes)工厂构造函数。

https://api.flutter.dev/flutter/widgets/Image/Image.memory.html

【讨论】:

    【解决方案2】:

    您可以使用Bitmap 创建一个带有Image.memory() 可以解析的标头的Uint8List。

    https://pub.dev/packages/bitmap:

    import 'package:bitmap/bitmap.dart';
    
    Bitmap bitmap = Bitmap.fromHeadful(imageWidth, imageHeight, theListOfInts); // Not async
    
    // ..
    
    Uint8List headedBitmap = bitmap.buildHeaded();
    
    // ..
    child: Image.memory(headedBitmap)
    // ..
    

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2021-04-05
      • 2020-06-15
      • 2021-08-01
      • 2020-05-20
      • 2022-10-05
      • 2023-03-10
      • 2020-03-06
      • 2019-09-11
      相关资源
      最近更新 更多