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)