【发布时间】:2014-04-05 20:22:09
【问题描述】:
【问题讨论】:
【问题讨论】:
维基百科的图片:
描述了 little-endian 架构上 32 位 ARGB 整数的字节布局。
而您问题中的图片对应于相同ARGB 整数的big-endian 布局。
所以,答案是:两张图片都是正确的,它们只是在内存中的位寻址方面考虑了不同的架构。
你应该关心的是,不管字节顺序如何,ARGB,A 是 32 位值的最高有效字节,R 在第二个最高有效字节, ... 和 B 可以作为最低有效字节找到。
因此,无论您是什么类型的“endian”平台,您都可以通过相应的位移操作正确提取它们。
编辑
实际上,您的问题中的图片对我来说似乎很奇怪,因为它以相反的顺序显示A、R、G、B 字节(即使正确寻址它们)。我建议您坚持使用维基百科中的图表来避免混淆。
回答您的评论:与 TYPE_INT_RGB 相比,Java 的 TYPE_INT_BGR 对 rgb 颜色进行了反转编码,请参阅 java.awt.image.BufferedImage.java :
case TYPE_INT_BGR:
{
colorModel = new DirectColorModel(24,
0x000000ff, // Red
0x0000ff00, // Green
0x00ff0000 // Blue
);
使用哪一个取决于您的需要,但我猜您可以使用 RGB 和 ARGB。
希望有帮助
【讨论】:
RGB 和ARGB