Java BuffereImage光栅数据到BuffereImage

Java BuffereImage光栅数据到BuffereImage,java,image,awt,bufferedimage,raster,Java,Image,Awt,Bufferedimage,Raster,这是我的密码: byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); BufferedImage newImage = new BufferedImage(image.getWidth(), image.getHeight(), image.getType()); WritableRaster raster = newImage.getRaster(); raster.setDataElem

这是我的密码:

byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
BufferedImage newImage = new BufferedImage(image.getWidth(), image.getHeight(), image.getType());
WritableRaster raster = newImage.getRaster();
raster.setDataElements(0, 0, image.getWidth(), image.getHeight(), pixels);
newImage.setData(raster);
ImageIO.write(newImage, "jpg", new File("newimage.jpg"));
这段代码在我看来是正确的,应该做我想做的事情。它获取图像的像素数据,然后使用它创建一个新图像,该图像看起来应该与原始图像完全相同。但是,保存的图像具有与原始图像不同的颜色。为什么?

最终,我需要处理像素字节,但现在,我不知道为什么它会给我一个不同的图像。

这篇文章可能会有所帮助


这似乎是ImageIO的一个常见问题,因此最好改用Toolkit

你能发布一个链接到你的(最好是小的)原始输入和输出图像吗?可能是相关的。也可能是完全无关的。在任何情况下,我都不建议使用工具箱作为解决方法。这个特定的bug在以后的JRE中得到了修复。