我正在使用以下代码将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通道?
我做了一些测试运行并在调试模式下检查了每个元素,但我的结果是不确定的(我错过了什么?)
提前致谢。
答案 0 :(得分:1)
感谢我对原始问题的评论,我找到了答案。
查看BufferedImage.getType()
和JavaDoc的结果,将帮助您确定byte[]
数组中颜色的映射。
在我的例子中,图像的类型是TYPE_3BYTE_BGR
,根据Java文档,它在3个连续的字节元素中存储为交错的蓝色,绿色,红色。
希望这有助于其他人: - )