对图片的编辑是一个常见的编程需求,比如缩小图片、加水印等等,而thumbnailator就是一个非常好用的开源图片编辑Java类库,
https://github.com/coobird/thumbnailator
本文将对此工具进行介绍并给出代码样例。
1. 项目引入thumbnailator类库
以Maven项目为例,可以按如下配置添加thumbnailator依赖类库,
<dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency>
2. 获取缩略图
获取缩略图有两种方式,一个是指定缩放后的图片尺寸,还有一个指定图片缩放比例。
指定缩放尺寸到宽150+高100,
Thumbnails.of(new File("bird.jpg")).size(150, 100).toFile(new File("thumbnail.jpg"));
指定缩放比例为四分之一,
BufferedImage img = ImageIO.read(new File("bird.jpg")); BufferedImage thumbnail = Thumbnails.of(img).scale(0.25).asBufferedImage(); ImageIO.write(thumbnail, "jpg", new File("bird_scaled_25.jpg"));
图片缩放的效果图,
3. 旋转图片指定角度
对图片分别旋转0、90、180、270、45度,
for (int i : new int[] {0, 90, 180, 270, 45}) { Thumbnails.of("bird.jpg") .size(100, 100) .rotate(i) .toFile(new File("bird_rotated_" + i + ".jpg")); }
4. 添加水印
添加一个水印,并且设置水印透明度为30%,
Thumbnails.of("bird.jpg") .scale(1) .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(watermarkFile), 0.3f) .outputQuality(0.8) .toFile(new File("bird_with_watermark.jpg"));
图片添加水印的效果图,
5. 更改图片格式
读取JPEG格式图片,然后输出PNG格式图片,
OutputStream outPng = new FileOutputStream(resDir + "output.png"); Thumbnails.of("bird.jpg") .scale(1) .outputFormat("png") .toOutputStream(outPng); outPng.close();
6. 批量处理图片
Thumbnailnator可以同时指定多个图片文件,批量进行处理,
Thumbnails.of("bird.jpg", "bird2.jpg", "bird3.jpg") .scale(1) .toFiles(new File(outDirectory), Rename.PREFIX_DOT_THUMBNAIL);
7. 代码样例
上述的代码样例可以在如下代码仓库中获取(代码路径tools\java\thumbnailator),
git clone git@git.oschina.net:pphh/tools.git
代码仓库地址: http://git.oschina.net/pphh/tools
参考文章:
工具使用说明 https://github.com/coobird/thumbnailator/wiki/Examples