在Ionic或springboot中减少JPG文件大小

时间:2017-11-28 08:35:20

标签: image spring-boot ionic-framework compression

我在Ionic 3中有一个应用程序,可以在springboot服务器上上传JPG文件。

我搜索一种方法来减少JPG文件(客户端或服务器端)的文件大小,这是一种在不影响质量的情况下将图像压缩到最佳水平的算法(无需调整大小)。

我找到tinyPng:https://tinypng.com/,但我需要一个“本地”算法,而不是网络界面。

有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

使用javax.imageio进行图像转换

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