【发布时间】: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 小部件?
谢谢!
【问题讨论】:
-
MemoryImage(uint8List)api.flutter.dev/flutter/painting/MemoryImage-class.html -
以上或Image.memory(uint8List)api.flutter.dev/flutter/widgets/Image/Image.memory.html
-
MemoryImage(以及等价的Image.memory)期望原始字节是PNG图像、JPEG图像等。我不确定他们会识别RGB值的原始流(并且不知道这些字节代表 RGB、BGR、RGBA、ARGB 等数据)。Imageclass(来自dart:ui)可能会有所帮助。