<dependency>
<groupId>com.github.jai-imageio</groupId>
<artifactId>jai-imageio-core</artifactId>
<version>1.4.0</version>
</dependency>
System.setProperty("com.sun.media.jai.disableMediaLib", "true");
System.setProperty("com.sun.media.imageio.disableCodecLib", "true");
import javax.imageio.ImageIO;
import javax.imageio.ImageReadParam;
import javax.imageio.ImageReader;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.plugins.jpeg.JPEGImageReadParam;
import javax.imageio.stream.ImageInputStream;
import javax.imageio.stream.ImageOutputStream;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
public class ImageProcessingExample {
public static void main(String[] args) {
File inputImageFile = new File("input.jpg");
try (ImageInputStream inputImageStream = ImageIO.createImageInputStream(inputImageFile)) {
Iterator<ImageReader> imageReaders = ImageIO.getImageReaders(inputImageStream);
ImageReader imageReader = imageReaders.next();
imageReader.setInput(inputImageStream);
ImageReadParam readParam = imageReader.getDefaultReadParam();
if (imageReader.getFormatName().equalsIgnoreCase("JPEG")) {
JPEGImageReadParam jpegReadParam = (JPEGImageReadParam) readParam;
jpegReadParam.setCompressionMode(ImageReadParam.MODE_EXPLICIT);
jpegReadParam.setCompressionQuality(0.8f);
jpegReadParam.setProgressiveMode(JPEGImageReadParam.MODE_DEFAULT);
}
BufferedImage image = imageReader.read(0, readParam);
// ...
File outputImageFile = new File("output.jpg");
try (ImageOutputStream outputImageStream = ImageIO.createImageOutputStream(outputImageFile)) {
Iterator<ImageWriter> imageWriters = ImageIO.getImageWritersByFormatName("JPEG");
ImageWriter imageWriter = imageWriters.next();
imageWriter.setOutput(outputImageStream);
ImageWriteParam writeParam = imageWriter.getDefaultWriteParam();
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionQuality(0.8f);
writeParam.setDestinationType(ImageIO.getImageTypeSpecifier(image));
imageWriter.write(null, new javax.imageio.IIOImage(image, null, null), writeParam);
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}