gpt4 book ai didi

java - 使用字节数组设置栅格数据

转载 作者:行者123 更新时间:2023-11-30 06:59:10 26 4
gpt4 key购买 nike

我有关于 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时,最终结果并不是预期的结果。我已经为这个项目苦苦思索好几天了,我想看看是否可以将字节数据直接放入栅格中,看看是否会产生影响。如果这个问题有点令人困惑,我很抱歉,因为几个小时的编码,我的大脑有点烧焦了。如果有什么办法可以让我说得更清楚,请告诉我。

谢谢!

编辑:输出图像 clilck

EDIT2:旁注,有谁知道为什么字节似乎在输出图像中重复?分离高位和低位的代码似乎没有重复任何内容。

最佳答案

使用 DataBufferByte 将字节数组复制到图像中是最快、最安全的方法。我做了完全相同的事情,并且效果完美。

因此,如果结果不是你所期望的,那么只有两种可能:

  1. 复制到 DataBuffer 中的数据并不是您想象的那样
  2. 写入图像时出现问题。

如果你想使用栅格而不是DataBuffer,你可以按如下操作。

for (int y=0, pos=0 ; y < dimHeight ; y++)
for (int x=0 ; x < dimWidth ; x++)
bImageFromConvert.getRaster().setSample(x, y, O, imageInByte[pos] & 0xFF) ;

但它必须与你之前所做的结果完全相同。 Raster 只是为您管理 BufferedImage 编码。所以我确实认为您在其他地方遇到了问题(请参阅我引用的两点)。

关于java - 使用字节数组设置栅格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41249827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com