1.maven引入依赖
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.19</version>
</dependency>
2.java代码示例
private static void compression() {
// 允许文件最大的大小(kb)
int fileMax = 300 * 1000;
// 当前压缩的文件大小
int currentFileSize;
// 读取文件
File file = new File("/test/demo.png");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
do {
//判断是使用文件刚读取的input 还是使用已经压缩过的input
InputStream inputStream = outputStream.size() == 0 ? new FileInputStream(file) : new ByteArrayInputStream(outputStream.toByteArray());
// 清空 outputStream
outputStream = new ByteArrayOutputStream();
// 压缩图片到 outputStream
Thumbnails.of(inputStream)
.scale(0.9)
.toOutputStream(outputStream);
currentFileSize = outputStream.size();
} while (currentFileSize > fileMax);
//写入本地文件 根据后续选择,上传等等
FileOutputStream fileOutputStream = new FileOutputStream("/test/123123.png");
outputStream.writeTo(fileOutputStream);
//上传文件 自行选择处理方式
MultipartFile multipartFile = new MockMultipartFile("uploadFile", "uploadFile.png", "image/png", outputStream.toByteArray());
} catch (IOException e) {
throw new ServiceException("图片压缩失败");
}
}