Java中的图像输入输出

时间:2016-07-27 14:54:16

标签: java image-processing

在此代码中,我将图像作为输入并输出相同的图像。据我所知,如果两张图像相同,那么它们的PSNR值将为inf。所以我使用MATLAB计算他们的PSNR值,但它显示48.05,这意味着那些图像不相同。但是我读了并写了相同的图像,为什么会这样。我该如何解决?

public class ImageProcessing {

     BufferedImage image = null;
     int width;
     int height;

     public ImageProcessing() {

         // Input the image
         try {
             File input = new File("image0.jpg");
             image = ImageIO.read(input);
             width = image.getWidth();
             height = image.getHeight();


             /*int count = 0;
             for (int i = 0; i < height; i++) {
                 for (int j = 0; j < width; j++) {
                     count++;
                     Color c = new Color(image.getRGB(j, i));
                     System.out.println("S.No: " + count + " Red: " + c.getRed() + "  Green: " + c.getGreen() + " Blue: " + c.getBlue());
                 }
             }*/
         } catch (Exception e) {
             System.out.println("Error: " + e);
         }

         // Output the image
         try {
             File input = new File("image1.jpg");
             ImageIO.write(image, "jpg", input);
             System.out.println("Writing complete.");
         } catch (Exception e) {
             System.out.println("Error: " + e);
         }
     }

     public static void main(String[] args) {
         // TODO code application logic here
         System.out.println("System Start");

         ImageProcessing obj = new ImageProcessing();
     }
 }

2 个答案:

答案 0 :(得分:1)

JPGlossy格式,每次保存时,您都会丢失读取信息并将其写出来。

也许尝试使用非损耗格式,例如PNG或GIF。

答案 1 :(得分:1)

是的,为了摆脱Salmans评论,无损压缩,文件中最初的每一位数据都保留在未压缩之后。这通常用于可能丢失信息的txt文档或电子表格文件,例如财务数据。 PNG或GIF使用无损压缩。 使用损失压缩有什么好处?它通过删除冗余信息使文件更小。通常,用户不会注意到它并用于声音和视频。 JPEG使用有损压缩,通常创建者可以决定在文件大小和图像质量之间进行权衡所需的损失。

主要来自:http://whatis.techtarget.com/definition/lossless-and-lossy-compression