我正在开发一个将数据隐藏在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中插入的数据进行了检查,但这不是我存储在图像中的数据)。
如何避免数据被破坏?
发布于 2015-04-26 14:42:52
A必须读取api,并且它仅适用于量化步骤
https://stackoverflow.com/questions/29659906
复制相似问题