<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(); } } }


上一篇:
下一篇:
切换中文