在从值数组写入图像后,rgb像素值在图像中发生了变化

时间:2014-10-24 17:19:45

标签: java image-processing

我的代码就像这样

BufferedImage img1=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
for(int r=0; r<w; r++)
{
    for(int c=0; c<h; c++)
    {
        img1.setRGB(0, 0, w, h, data,0,w);
     }
}
ImageIO.write(img1,"jpg", new File("abc.jpg"));

我想创建宽度为w和高度为h的图像。我的像素值在一个名为data的int数组中(由组合的rgb值组成).ImageIO.write方法创建图像但具有不同的像素值。 。请帮助我..我很难尝试..但仍然没有得到......

1 个答案:

答案 0 :(得分:2)

之所以是因为您正在使用JPEG压缩。 JPEG压缩是一种有损压缩算法,因此存储在内存中的与写入文件的相同。有损压缩允许高压缩比,并且模仿或非常类似于您在图像中看到的内容,但实际内容将不相同。他们肯定会相似。

您可以写入图像文件并保持图像像素相同的唯一方法是使用无损压缩算法。请尝试使用PNG。