我想通过 Java 减小一个 jpeg 图像大小(3M 减小到 1M),没有缩放(图像高度和宽度没有变化)。在此站点中,我找不到解决方案。以下是我尝试过的:
1 使用 ImageIO:
BufferedImage image = ImageIO.read(inputFile);
ImageWriter writer = null;
Iterator iter = ImageIO.getImageWritersByFormatName("jpg");
if(iter.hasNext()){
writer = (ImageWriter) iter.next();
}
ImageOutputStream ios = ImageIO.createImageOutputStream(outputFile);
writer.setOutput(ios);
ImageWriteParam iwParam = writer.getDefaultWriteParam();
iwParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwParam.setCompressionQuality(compressionQuality);
writer.write(null, new IIOImage(image, null, null ), iwParam);
对于解决方案 1,我为 jpg 设置了 compressionQuality,但我无法获得原始图像 compressQuality,并且有时我得到的 newImage 比原始图像大。