Thumbnailator是一个优秀的图片处理的Google开源类库,处理图片效果比Java API的好,能够用于图片缩放,裁剪,加水印等。目前任不断更新。质量比较有保证。java
咱们在使用一下的语句来引入Thumbnails库数组
<dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency>
Thumbnails加载图片支持多样化形式。有如下的集中maven
- URL数组
- File数组
- String文件全路径数组
- BufferedImage数组
- InputStream数组
Thumbnails.of(path) .scale(0.5) .toFile(tmepPath);
执行上述代码,图片会被缩小50%。scale(double):是缩略图的缩放系数。取值范围是[0,1]。
若是咱们不想按照比例缩放图片,也能够指定具体的大小来缩放图片ui
Thumbnails.of(path) .size(200,200) .toFile(tmepPath);
须要注意的一点就是scale()和size()不能同时使用code
Thumbnails有一个方法keepAspectRatio()方法是用来保持图片的长宽比例,默认为true,若是设置成false。强行输出的话,会形成图片可能会变形。图片
Thumbnails.of(path) .size(160,160) .keepAspectRatio(false) .toFile(tempPath);
上述代码中,若是原图不是正方形,则输出依旧为160160,可是图片会变形。
但若是在keepAspectRatio()在默认状况下,原图是正方形,则输出图片正常为160160。图片处理
添加水印主要用到watermark()方法。watermaker的方法签名入下所示it
public Thumbnails.Builder<T> watermark(Watermark var1)
简单的加水印的方法。Watermark是Thumbnails内置的一个类,类的成员包括,位置,图片,缩放的大小。一般指定了一个Watermarker类也就指定了水印大小和位置。io
public Thumbnails.Builder<T> watermark(BufferedImage var1)
只有一个BufferedImage参数,也就是将该水印图片覆盖到目标图片中,默认居中图像处理
public Thumbnails.Builder<T> watermark(BufferedImage var1, float var2)
指定大小的水印
public Thumbnails.Builder<T> watermark(Position var1, BufferedImage var2, float var3)
指定大小和位置的水印
File watermark = new File("water.png"); BufferedImage watermarkBufferedImage = Thumbnails.of(watermark).scale(1.0).outputQuality(1.0).asBufferedImage(); Thumbnails.of("pic.jpg") .scale(1) .watermark(Positions.TOP_RIGHT, watermarkBufferedImage, 1.0f) .toFile("pic2.jpg");
裁剪图片的方法
Thumbnails.Builder<T> sourceRegion(int var1, int var2, int var3, int var4)
public Thumbnails.Builder<T> sourceRegion(Position var1, int var2, int var3)
public Thumbnails.Builder<T> sourceRegion(Rectangle var1)