前言
thumbnailator是一个java的缩略图生成库,不仅能生成缩略图,还能对图片进行裁剪、打水印、旋转、缩放等等。依赖如下:
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.16</version>
</dependency>
问题描述
在使用该库进行图片压缩的时候,首先进行了测试:
Thumbnails.of("D:/data/a.jpg")
.outputQuality(0.5)
.size(1920, 1080)
.keepAspectRatio(true)
.toFile("D:/data/333.jpg");
通过上述测试发现图片大小确实压缩到了50%左右。于是用于了实际的开发中
BufferedImage image = Thumbnails.of(image)
.size(imageWidth, imageHeight)
//保持长宽比
.keepAspectRatio(true)
//输出图片的质量(压缩率)
.outputQuality(imageQuality)
//图片格式
.outputFormat("JPEG")
..asBufferedImage();
将上述image对象保存到MongoDB中时发现图片并没有被压缩,还是保持原大小。
解决方案
为了解决这个问题,去官方文档找了一下,发现了下面绿色框中的话,大概意思是说图片压缩和asBufferedImage/asBufferedImages两个方法有冲突,如果处理以后最终是以这两个方法输出会导致图片压缩不生效。