打包图像的字节顺序

时间:2014-04-25 15:09:26

标签: c++ c rgb

所以从http://en.wikipedia.org/wiki/RGBA_color_space开始,我了解到ARGB的字节顺序是从最低地址到最高地址BGRA,在某些解释中的小端机器上。

这如何影响打包数据的命名约定,例如uint8_t ar[]={R,G,B,R,G,B,R,G,B}

2 个答案:

答案 0 :(得分:0)

根据定义,小端以相反的顺序存储数字的字节。如果将它们视为字节数组,则这不是必需的,但任何模糊高效的代码库实际上将4字节视为32位无符号整数。这将使软件blitting的速度提高近4倍。

现在真正的问题是为什么。这是因为当如上所述将像素视为32位int时,编码器希望能够以可预测的方式运行算术和移位。这依赖于字节的顺序相反。

简而言之,这实际上并不奇怪,因为在小端机器中,最后一个字节(最高地址)实际上是最重要的字节,第一个字节是最不重要的字节。因此,像这样的字段自然会以相反的顺序排列,所以当它被视为一个数字时它是正确的方式(作为一个数字,它将显示为ARGB,但作为字节数组,它将显示为BGRA)。

对不起,如果不清楚,但我希望它有所帮助。如果你不明白或我错过了什么,请发表评论。

答案 1 :(得分:0)

如果您将数据存储在您指定的字节数组中,则使用的BGR格式基本上是RGB反转的:

bgr-color-space