从 ARGB BufferedImage 获取 RGBA 像素?
Get RGBA pixels from ARGB BufferedImage?
有没有简单的方法从 argb BufferedImage
得到 rgba int[]
?我需要将其转换为 opengl,但我不想遍历像素数组并自己进行转换。
为了在 argb 和 rgba 之间转换,您可以应用 "bit-wise shifts" 以便以快速简洁的格式来回转换它们。
argb = rgba <<< 8
rgba = argb <<< 24
如果您有任何进一步的问题,this topic 可能会为您提供有关 rgba 和 argb 之间转换的更深入的答案。
此外,如果您想了解有关 java 的按位运算符的更多信息 check out this link
OpenGL 1.2+ 支持 GL_BGRA
像素格式和反向打包像素。
从表面上看BGRA
听起来不像你想要的,但让我解释一下。
像 glTexImage2D (...)
这样的调用执行所谓的像素传输,这涉及打包和解包图像数据。在像素传输的过程中,可能会进行数据转换,可能会遵循特殊的对齐规则等,数据转换这一步是我们这里特别感兴趣的;除了明显的 RGBA
组件顺序之外,您还可以在许多不同的布局中传输像素。
如果你颠倒字节顺序(例如数据类型=GL_UNSIGNED_INT_8_8_8_8_REV
)和GL_BGRA
格式,你将有效地传输ARGB像素而没有任何您的努力。
示例 glTexImage2D (...)
调用:
glTexImage2D (..., GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image);
_REV
打包数据类型的通常用例是处理不同处理器之间的字节序差异,但当您想要反转图像中组件的顺序时它也派上用场(因为没有GL_ARGB
).
不要为 OpenGL 转换东西 - 它完全可以自己完成。
有没有简单的方法从 argb BufferedImage
得到 rgba int[]
?我需要将其转换为 opengl,但我不想遍历像素数组并自己进行转换。
为了在 argb 和 rgba 之间转换,您可以应用 "bit-wise shifts" 以便以快速简洁的格式来回转换它们。
argb = rgba <<< 8
rgba = argb <<< 24
如果您有任何进一步的问题,this topic 可能会为您提供有关 rgba 和 argb 之间转换的更深入的答案。
此外,如果您想了解有关 java 的按位运算符的更多信息 check out this link
OpenGL 1.2+ 支持 GL_BGRA
像素格式和反向打包像素。
从表面上看BGRA
听起来不像你想要的,但让我解释一下。
像 glTexImage2D (...)
这样的调用执行所谓的像素传输,这涉及打包和解包图像数据。在像素传输的过程中,可能会进行数据转换,可能会遵循特殊的对齐规则等,数据转换这一步是我们这里特别感兴趣的;除了明显的 RGBA
组件顺序之外,您还可以在许多不同的布局中传输像素。
如果你颠倒字节顺序(例如数据类型=GL_UNSIGNED_INT_8_8_8_8_REV
)和GL_BGRA
格式,你将有效地传输ARGB像素而没有任何您的努力。
示例 glTexImage2D (...)
调用:
glTexImage2D (..., GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image);
_REV
打包数据类型的通常用例是处理不同处理器之间的字节序差异,但当您想要反转图像中组件的顺序时它也派上用场(因为没有GL_ARGB
).
不要为 OpenGL 转换东西 - 它完全可以自己完成。