BufferedImage to byte:如何映射通道?

时间:2014-01-30 17:35:19

标签: java byte bufferedimage rgba

我正在使用以下代码将BufferedImage转换为byte[]数组:

BufferedImage input = ImageIO.read(new File(path));
DataBufferByte bufferBytes = (DataBufferByte) input.getRaster().getDataBuffer();
byte[] bytes = bufferBytes.getData();

令我困惑的一件事是,如何将通道映射到实际的字节元素?假设我有一个ARGB图像用于图像中的第一个像素,从bytes[0]开始并通过bytes[3],哪个元素是红色通道,哪一个是绿色通道,哪一个是蓝色通道,哪一个是alpha通道?

我做了一些测试运行并在调试模式下检查了每个元素,但我的结果是不确定的(我错过了什么?)

提前致谢。

1 个答案:

答案 0 :(得分:1)

感谢我对原始问题的评论,我找到了答案。 查看BufferedImage.getType()和JavaDoc的结果,将帮助您确定byte[]数组中颜色的映射。

在我的例子中,图像的类型是TYPE_3BYTE_BGR,根据Java文档,它在3个连续的字节元素中存储为交错的蓝色,绿色,红色。

希望这有助于其他人: - )