目前我有一个 Uint8List,格式为 [R,G,B,R,G,B,...] 用于图像的所有像素。当然,我有它的宽度和高度。
我decodeImageFromPixels
在搜索时发现但它只需要 RGBA/BGRA 格式。我将我的像素图从 RGB 转换为 RGBA,这个函数工作正常。
但是,我的代码现在看起来像这样:
Uint8List rawPixel = raw.value.asTypedList(w * h * channel);
List<int> rgba = [];
for (int i = 0; i < rawPixel.length; i++) {
rgba.add(rawPixel[i]);
if ((i + 1) % 3 == 0) {
rgba.add(0);
}
}
Uint8List rgbaList = Uint8List.fromList(rgba);
Completer<Image> c = Completer<Image>();
decodeImageFromPixels(rgbaList, w, h, PixelFormat.rgba8888, (Image img) {
c.complete(img);
});
我必须创建一个新列表(浪费空间)并遍历整个列表(浪费时间)。
在我看来这太低效了,有什么办法可以让它更优雅吗?喜欢添加一个新的PixelFormat.rgb888
?
提前致谢。