在java中将JPEG图像写为未压缩仍然会破坏数据

时间:2015-04-15 20:08:47

标签: java image jpeg

我正在制作一个隐藏JPEG图像LSB数据的应用程序。知道JPEG是有损压缩并且默认压缩率为70%,我将它的参数更改为100%,因此假设它不会破坏图像中的任何数据。这是代码。

File output = new File(gui.getOutput()+".jpg");

ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next();
ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWriteParam();
jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
jpgWriteParam.setCompressionQuality(1f);

FileImageOutputStream outputStream = new FileImageOutputStream(output); 
jpgWriter.setOutput(outputStream);
IIOImage outputImage = new IIOImage(image, null, null);
jpgWriter.write(null, outputImage, jpgWriteParam);
jpgWriter.dispose();

创建的图像确实损失较少,但我存储在像素中的数据被破坏了。 (我通过读取LSB中插入的数据来检查它,并且它不是我存储在图像中的数据)。

我该怎么做才能避免数据被破坏?

1 个答案:

答案 0 :(得分:0)

必须阅读api,它仅适用于量化步骤