1.依赖
<!-- 图片压缩 -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
2.实现
//scale是可以指定图片的大小,值在0到1之间,1f就是原图大小,0.5就是原图的一半大小,这里的大小是指图片的长宽。
//outputQuality是图片的质量,值也是在0到1,越接近于1质量越好,越接近于0质量越差。
public static void imageCompress() throws IOException {
Thumbnails.of("/Users/tbtx/Desktop/1.jpg")
.scale(1f)
.outputQuality(0.5f)
.toFile("/Users/tbtx/Desktop/12.jpg");
}
3.项目使用
// 因为png格式图片无法进行压缩, 使用.outputFormat("jpg")输出为jpg格式可以实现压缩,输出为OutputStream转为InputStream再进行上传
public InputStream imageCompress(MultipartFile file) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
Thumbnails.of(file.getInputStream())
.scale(1f)
.outputQuality(0.5f)
.outputFormat("jpg")
.toOutputStream(byteArrayOutputStream);
InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
return inputStream;
}