Reduce JPG file size in Ionic or springboot

Viewed 689

i have an application in Ionic 3 to upload JPG files on springboot server.

I search a way to reduce the file size of JPG files (client-side or server-side), an algo for compressing the image to best level without compromising on quality (without resize).

I find tinyPng : https://tinypng.com/ , but i need a 'local' algo, not a web-interface.

Any ideas ? Thanks!

1 Answers

Use javax.imageio for image conversion

File readFile = new File(System.getProperty("java.io.tmpdir") + "/" +"filename.jpg");

File compressedImageFile = new File(System.getProperty("java.io.tmpdir") + "/" + "Compressed_filename.jpg");

BufferedImage image = ImageIO.read(readFile);
OutputStream os = new FileOutputStream(compressedImageFile);

Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("jpg");
ImageWriter writer = writers.next();

ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);

ImageWriteParam param = writer.getDefaultWriteParam();

param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.05f);
writer.write(null, new IIOImage(image, null, null), param);
os.close();
ios.close();
writer.dispose();
Related