一、简介
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三者不能同时共存,但必须要有一个