【问题标题】:BufferedImage to byte: how are the channels mapped?BufferedImage 到字节:通道是如何映射的?
【发布时间】:2014-01-31 02:20:00
【问题描述】:

我正在使用以下代码将 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通道吗?

我在调试模式下进行了一些测试并检查了每个元素,但我的结果没有定论(我是否遗漏了什么?)

提前致谢。

【问题讨论】:

标签: java byte bufferedimage rgba


【解决方案1】:

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

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

希望这对其他人有所帮助:-)

【讨论】:

    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 2012-06-29
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多