Java图片编辑工具thumbnailator

对图片的编辑是一个常见的编程需求,比如缩小图片、加水印等等,而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"));

图片缩放的效果图,

thumbnail

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"));
 }

rotate

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"));

图片添加水印的效果图,

watermark

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