作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有关于 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 将字节数组复制到图像中是最快、最安全的方法。我做了完全相同的事情,并且效果完美。
因此,如果结果不是你所期望的,那么只有两种可能:
如果你想使用栅格而不是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/
我是一名优秀的程序员,十分优秀!