我是一名新手开发人员,我需要您的帮助来处理对您来说可能微不足道的事情。

我有一个像素格式的图像数据:256 色调色 RGBA。它来自 FFmpeg (PIX_FMT_PAL8),它的解释是这样的:



AVFrame 结构体包含 uint8_t *data[4]int linesize[4] ,它们被简单地描述为:



我有包含所有所需数据的 AVFrame 结构,但我不知道如何处理它。
我需要从这个图像数据创建一个 NSImage 。

我怎样才能做到这一点?

最佳答案

在调色板图像的情况下,像素包含一个字节值,它是调色板的索引。调色板有 256 个条目。

像素从地址 AVFrame.data[0] 开始存储;调色板从地址 AVFrame.data[1] 开始存储。

因此,要获得 (X, Y) 处像素的 4 字节像素值,您可以先使用:

uint8_t Index= AVFrame.data[0][X + AVFrame.linesize[0] * Y];

将索引放入调色板,然后
int RGBA= ((int*)AVFrame.data[1])[Index];

获取RGBA编码值。

关于image - 如何将 256 色调色 RGBA 图像数据转换为 NSImage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7335504/

10-09 15:24