借用紅薯對Thumbnailator 的描述:Thumbnailator是一個用來生成圖像縮略圖的 Java類庫,經過很簡單的代碼便可生成圖片縮略圖,也可直接對一整個目錄的圖片生成縮略圖。html
有了這玩意,就不用在費心思使用Image I/O API,Java 2D API等等來生成縮略圖了。java
直接上代碼,先來看一個最簡單的例子:git
的確是爽歪歪的說,一行代碼就把大鳥變小鳥。github
那我要是有一個文件夾都須要生成縮略圖,那仍是很麻煩,有沒有對文件夾下全部圖片生成縮略圖呢?答案是確定的:google
Thumbnails.of(newFile("path/to/directory") .listFiles()) .size(640,480) .outputFormat("jpg") .toFiles(Rename.PREFIX_DOT_THUMBNAIL); |
這個代碼想不用我解釋就能看懂什麼意思了吧?我我的很喜歡這種API的方式,簡潔,易懂,明瞭。spa
2.1.能夠根據現有的圖片生成高質量的縮略圖.net
下面是一個對比:翻譯
Thumbnailator生成的縮略圖code |
Graphics.drawImage生成的縮略圖orm |
2.2.能夠在縮略圖中嵌入水印,而且能夠設置水印的透明度:
2.3.支持生成通過旋轉後的縮略圖:
代碼:
for(inti :newint[] {0,90,180,270,45}) { Thumbnails.of(newFile("coobird.png")) .size(100,100) .rotate(i) .toFile(newFile("image-rotated-"+ i +".png")); } |
2.4.能夠生成多種質量模式的縮略圖
2.5.若是須要的話,在生成縮略圖的時候能夠保持和源圖像同樣的的寬高比
3.1.最簡單的例子
<b>Thumbnails.of(newFile("original.jpg")) .size(160,160) .toFile(newFile("thumbnail.jpg"));</b> |
最後一行的toFile()方法還接受一個String類型的參數,以下面的代碼和上面的做用的同樣的:
Thumbnails.of("original.jpg") .size(160,160) .toFile("thumbnail.jpg");
3.2.生成一個帶有旋轉和水印的縮略圖:
Thumbnails.of(newFile("original.jpg")) .size(160,160) .rotate(90) .watermark(Positions.BOTTOM_RIGHT, ImageIO.read(newFile("watermark.png")),0.5f) .outputQuality(0.8f) .toFile(newFile("image-with-watermark.jpg"));
這段代碼是從original.jpg這張圖片生成最大尺寸160*160,順時針旋轉90°,水印放在右下角,50%的透明度,80%的質量壓縮的縮略圖。
3.3.把生成的圖片輸出到輸出流(OutPutStream)中
OutputStream os = ...; Thumbnails.of("large-picture.jpg") .size(200,200) .outputFormat("png") .toOutputStream(os);
3.4.按必定的比例生成縮略圖
BufferedImage originalImage = ImageIO.read(newFile("original.png")); BufferedImage thumbnail = Thumbnails.of(originalImage) .scale(0.25f) .asBufferedImage(); |
生成縮略圖的大小是原來的25%
整理翻譯自:
http://code.google.com/p/thumbnailator/
http://code.google.com/p/thumbnailator/wiki/Examples
Thumbnailator的GitHub地址:
https://github.com/coobird/thumbnailator
Java Doc