繁体   English   中英

从ARGB BufferedImage获取RGBA像素?

[英]Get RGBA pixels from ARGB BufferedImage?

有没有一种简单的方法可以从argb BufferedImage获取rgba int[] 我需要将其转换为opengl,但是我不想遍历像素数组并自己进行转换。

OpenGL 1.2+支持GL_BGRA像素格式和反向打包像素。

从表面BGRA并不像您想要的,但让我解释一下。

glTexImage2D (...)类的调用执行所谓的像素传输,涉及打包和解包图像数据。 在像素传输过程中,可能会执行数据转换,可能会遵循特殊的对齐规则,等等。 除了明显的RGBA组件顺序之外,您还可以采用多种不同的布局传输像素。

如果将字节顺序( 例如,数据类型= GL_UNSIGNED_INT_8_8_8_8_REV )与GL_BGRA格式一起GL_BGRA ,则可以有效地传输ARGB像素,而无需您付出任何实际努力。

示例glTexImage2D (...)调用:

glTexImage2D (..., GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, image);

_REV打包数据类型的通常用例是处理不同处理器之间的字节序差异,但是当您想要反转图像中组件的顺序时,它也很方便(因为没有GL_ARGB这样的东西)。

不要为OpenGL转换内容-它完全有能力单独执行此操作。

为了在argb和rgba之间转换,您可以应用“按位移位”,以快速简洁的格式来回转换它们。

argb = rgba <<< 8

rgba = argb <<< 24

如果您还有其他问题, 本主题可能会为您提供有关在rgba和argb之间进行转换的更深入的答案。

另外,如果您想进一步了解Java的按位运算符, 请查看此链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM