【发布时间】:2016-12-20 19:26:21
【问题描述】:
我对 BufferedImage 中的栅格有疑问。我有一个图像数据的字节数组,我想将该字节数据设置为新的图像数据。我已经看到了这样做的方法,如下图所示:
BufferedImage bImageFromConvert = new BufferedImage(dimWidth, dimHeight, BufferedImage.TYPE_BYTE_GRAY);
byte[] bufferHolder = ((DataBufferByte) bImageFromConvert.getRaster().getDataBuffer()).getData();
System.arraycopy(imageInByte, 0, bufferHolder, 0, bufferHolder.length);//imageInByte is my byte array
ImageIO.write(bImageFromConvert, "bmp", new File(
directory + fileName + "_Compressed.bmp"));
但是,在将数据写入 bmp 时,最终结果并非预期的那样。几天来,我一直在苦苦琢磨这个项目,我想看看是否可以将字节数据直接放入 Raster 中,看看是否会有所作为。如果这个问题有点令人困惑,我很抱歉,我的大脑因编码时间而有点煎熬。请让我知道是否有任何方法可以使其更清楚。
谢谢!
编辑:输出图像 clilck
EDIT2:旁注,有谁知道为什么字节似乎在输出图像中重复?区分高位和低位的代码似乎没有重复任何内容。
【问题讨论】:
-
您得到的结果有哪些与您的预期不同?
-
您是否尝试将字节数组
imageInByte应用于bImageFromConvert? -
@CraigR8806 我正在将堆叠的图像字节数据写入图像,预期的结果是让高字节作为真正“明亮”的迷你图像出现在图像的顶部,并且底部的低字节作为较暗的迷你图像。现在看起来高字节和低字节图像被重复了两次。我想知道是不是因为多个颜色通道?但我很确定 TYPE_BYTE_GRAY 给了我一个无符号的 8 位灰度图像。我很困惑为什么会发生这种重复。我将附上我的图像输出,以便您了解我的意思。
-
@CraigR8806,是的,我正在尝试将 imageInByte 放入 bImageFromConvert。
-
错误不在您发布的代码中。我建议您按照帮助中心的说明创建一个MCVE,以突出问题并获得更好的帮助。
标签: java arrays byte bufferedimage