我在Ionic 3中有一个应用程序,可以在springboot服务器上上传JPG文件。
我搜索一种方法来减少JPG文件(客户端或服务器端)的文件大小,这是一种在不影响质量的情况下将图像压缩到最佳水平的算法(无需调整大小)。
我找到tinyPng:https://tinypng.com/,但我需要一个“本地”算法,而不是网络界面。
有什么想法吗? 谢谢!
答案 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();