JAVA-6503: Image compression in Java (#14081)

This commit is contained in:
Harry9656
2023-06-08 21:58:24 +02:00
committed by GitHub
parent 5bfb63b2a1
commit 4bff7895a8
8 changed files with 143 additions and 0 deletions
@@ -0,0 +1,36 @@
package com.baeldung.image.compression;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
public class ImageCompressor {
public static void compressImage(String inputPath, String outputPath) throws IOException {
File inputFile = new File(inputPath);
BufferedImage inputImage = ImageIO.read(inputFile);
Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter writer = writers.next();
File outputFile = new File(outputPath);
ImageOutputStream outputStream = ImageIO.createImageOutputStream(outputFile);
writer.setOutput(outputStream);
ImageWriteParam params = writer.getDefaultWriteParam();
params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
params.setCompressionQuality(0.5f);
writer.write(null, new javax.imageio.IIOImage(inputImage, null, null), params);
outputStream.close();
writer.dispose();
}
}
@@ -0,0 +1,19 @@
package com.baeldung.image.compression;
import net.coobird.thumbnailator.Thumbnails;
import java.io.File;
import java.io.IOException;
public class ThumbnailsCompressor {
public static void compressImage(String inputPath, String outputPath) throws IOException {
File input = new File(inputPath);
File output = new File(outputPath);
Thumbnails.of(input)
.scale(1)
.outputQuality(0.5)
.toFile(output);
}
}