实现目标:对图片进行压缩,保证尺寸大小不变,并且保证图片质量,只改变文件大小,达到节约存储空间效果。
如果你看到这个文章之前,可能尝试过java原生的BufferImage来压缩,还有谷歌提供的Thumbnails压缩,都不能满足自己的压缩,那下面这个方法可能对你有用。
由于Tinypng压缩收费,所以不断的找资料翻百度,最终找到跟Tinypng效果一样的例子,给大家做参考,避免在同样踩坑(感觉原文在百度的索引不是太友好,不太好查,所以转到csdn上,原文跳转)
引入依赖
<dependency>
<groupId>org.jpedal</groupId>
<artifactId>OpenViewerFX</artifactId>
<version>6.6.14</version>
</dependency>
代码调用,简单粗暴
File file = new File(""); // 源文件
File outfile = new File(""); // 目标输出文件,可与源文件一致,一致会覆盖
PngCompressor.compress(file, outfile);
效果
结果
1、png图片压缩率大致在70%左右
2、jpg图片压缩率大致在80%左右
压缩时间2—4秒,符合预期效果。