1、引入依赖
<!-- 图片压缩 -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
2、压缩工具类
/**
* scale(0.8f)scale是可以指定图片的大小,值在0到1之间,1f就是原图大小,0.5就是原图的一半大小,
* outputQuality(0.5f)是图片的质量,值也是在0到1,越接近于1质量越好,越接近于0质量越差。
* outputFormat("jpg") 转换图片格式
* rotate(角度),正数:顺时针 负数:逆时针
* .toOutputStream(os);
*/
public static InputStream compressImg(MultipartFile file, InputStream inputStream)
{
try {
BufferedImage bufImg = Thumbnails.of(inputStream).scale(0.7f).outputQuality(0.5f).outputFormat("jpg").asBufferedImage();
ByteArrayOutputStream bs = new ByteArrayOutputStream();
String frontFileName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
ImageIO.write(bufImg, frontFileName, bs); //图片写入到 ImageOutputStream
inputStream = new ByteArrayInputStream(bs.toByteArray());
log.info("压缩前文件大小:" + file.getSize() / 1024 + "kb---" + "压缩后文件大小:" + bs.toByteArray().length / 1024 + "kb");
return inputStream;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}