Java调整压缩图片

需求

对客户上传的图片进行压缩,方便前端展示加载速度效果

已知图片为jpg,可能png等主流图片格式,基本为手机拍照或者是相机拍照的实体照片。照片分辨率普遍过大(像素垃圾图不清晰但文件大),压缩策略修改图片大小,然后进行”无损压缩“。需求网站为面向微信的小程序页面,800*600的分辨率应该够用。

依赖

1
2
3
4
5
6
7
8
9
10
11
12
<!--            图片压缩-->
<dependency>
<groupId>org.jpedal</groupId>
<artifactId>OpenViewerFX</artifactId>
<version>6.6.14</version>
</dependency>
<!-- 图片大小修改-->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.17</version>
</dependency>

代码

1
2
3
4
5
6
7
8
9
10
File dest = new File(applicationConfig.getUploadDir() + filePath);
// 调整图片大小
/*
* size(width,height) 若图片横比200小,高比300小,不变
* 若图片横比200小,高比300大,高缩小到300,图片比例不变 若图片横比200大,高比300小,横缩小到200,图片比例不变
* 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300
*/
Thumbnails.of(dest).size(800,600).toFile(dest);
//图片压缩,直接覆盖
PngCompressor.compress(dest,dest);

参考