Java图像处理:为什么输出图像的存储空间比输入图像小?

时间:2018-11-21 16:01:21

标签: java image

我正在学习Java图像处理。这是我的代码:

import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

public class LoadImage {
public static void main(String[] args) {    
    int width = 1280;
    int height = 720;

    BufferedImage image  = null;

    // READ IMAGE
    try {
        File input_image = new File("E:\\SELF-TAUGHT LEARNING\\39. Image Processing with Java\\test-image.jpg");
        image = new BufferedImage (width,height,BufferedImage.TYPE_INT_ARGB);
        image = ImageIO.read(input_image);
        System.out.println("Read successfully");
    }
    catch (IOException e) {
        System.out.println("Error: " + e);
    }

    // WRITE IMAGE
    try {
        File output_image = new File("E:\\SELF-TAUGHT LEARNING\\39. Image Processing with Java\\test-image-output.jpg");
        ImageIO.write(image, "jpg", output_image);
        System.out.println("Writing successfully");
    }
    catch (IOException e) {
        System.out.println("Error: "+ e);
    }
}
}

因此,输入图像约为300kb。但是输出图像仅为48kb。为什么?谢谢

1 个答案:

答案 0 :(得分:0)

如果在保存新版本后图像具有相同的分辨率和质量,则可能只是元数据和格式有所不同。但是,您也可能会得到质量较低的图像-如果原始图像的质量设置足够高,则Java将其保存为较低质量时可能不会引起注意。

一些要检查的东西:

  • 前后图像看起来有什么不同吗?
  • 残像是否更小?

我对Java不太了解,对它们的图像处理也不了解,但是我可以想象有设置图像大小,分辨率和质量的方法。但是,我确实需要处理很多图像,并且我知道可以进行很多优化(尤其是在JPEG图像中)以减少文件大小而又不会明显影响视觉质量。