一、简介
Thumbnailator是一个非常优秀的图片处理开源Java类库,处理效果极好,使用非常简单,极大的简化了代码量。同时支持批量处理。
二、maven依赖
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.8</version>
</dependency>
三、Thumbnails.of()
Thumbnails可以读取本地图片、url图片等。使用方法如下,读取指定url图片,scale(0.5f),将尺寸缩减一半儿。.outputQuality(0.5f),输出质量降低一半儿。最后输出到文件或者输出流中。
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
Thumbnails.of(url).scale(0.5f).outputQuality(0.5f).toOutputStream(outStream);
四、添加水印
Thumbnails.of(url).scale(0.5f).watermark(Positions.CENTER,ImageIO.read(waterPic),0.5f) .outputQuality(0.8f).toFile(toPic);
五、裁剪
//压缩至指定图片尺寸,保持图片不变形,多余部分裁剪掉
//压缩至指定图片尺寸(例如:横400高300),保持图片不变形,多余部分裁剪掉
BufferedImage image = ImageIO.read(fromPic);
Builder builder = null;
int imageWidth = image.getWidth();
int imageHeitht = image.getHeight();
if ((float)300 / 400 != (float)imageWidth / imageHeitht) {
if (imageWidth > imageHeitht) {
image = Thumbnails.of(fromPic).height(300).asBufferedImage();
} else {
image = Thumbnails.of(fromPic).width(400).asBufferedImage();
}
builder = Thumbnails.of(image).sourceRegion(Positions.CENTER, 400, 300).size(400, 300);
} else {
builder = Thumbnails.of(image).size(400, 300);
}
builder.outputFormat("jpg").toFile(toPic);
//scale 参数是浮点数,大于1表示放大,小于1表示缩小
//outputQuality 参数是浮点数,质量压缩,0-1之间
//keepAspectRatio 在调整尺寸时保持比例,默认为true,如果要剪裁到特定的比例,设置为false即可
*注意:scale、width|height、size三者不能同时共存,但必须要有一个