簡(jiǎn)單介紹
Thumbnailator是一個(gè)用來生成圖像縮略圖的 Java類庫让虐,通過很簡(jiǎn)單的代碼即可生成圖片縮略圖叠纹,也可直接對(duì)一整個(gè)目錄的圖片生成縮略圖拧揽。
有了這玩意,就不用在費(fèi)心思使用Image I/O API,Java 2D API等等來生成縮略圖了蛆挫。
直接上代碼,先來看一個(gè)最簡(jiǎn)單的例子:
的確是爽歪歪的說妙黍,一行代碼就把大鳥變小鳥悴侵。
那我要是有一個(gè)文件夾都需要生成縮略圖,那還是很麻煩拭嫁,有沒有對(duì)文件夾下所有圖片生成縮略圖呢可免?答案是肯定的:
Thumbnails.of(new File("path/to/directory")
.listFiles())
.size(640, 480)
.outputFormat("jpg")
.toFiles(Rename.PREFIX_DOT_THUMBNAIL);
這個(gè)代碼想不用我解釋就能看懂什么意思了吧?我個(gè)人很喜歡這種API的方式做粤,簡(jiǎn)潔浇借,易懂,明了怕品。
特點(diǎn)
可以根據(jù)現(xiàn)有的圖片生成高質(zhì)量的縮略圖
下面是一個(gè)對(duì)比:
可以在縮略圖中嵌入水印妇垢,并且可以設(shè)置水印的透明度
* | * | * | * |
---|---|---|---|
支持生成經(jīng)過旋轉(zhuǎn)后的縮略圖
* | * | * | * | * |
---|---|---|---|---|
代碼:
for (int i : new int[] {0, 90, 180, 270, 45}) {
Thumbnails.of(new File("coobird.png"))
.size(100, 100)
.rotate(i)
.toFile(new File("image-rotated-" + i + ".png"));
}
可以生成多種質(zhì)量模式的縮略圖
如果需要的話,在生成縮略圖的時(shí)候可以保持和源圖像一樣的的寬高比
更多實(shí)戰(zhàn)例子
最簡(jiǎn)單的例子
Thumbnails.of(new File("original.jpg"))
.size(160, 160)
.toFile(new File("thumbnail.jpg"));
最后一行的toFile()方法還接受一個(gè)String類型的參數(shù)堵泽,如下面的代碼和上面的作用的一樣的:
Thumbnails.of("original.jpg")
.size(160, 160)
.toFile("thumbnail.jpg");
生成一個(gè)帶有旋轉(zhuǎn)和水印的縮略圖
Thumbnails.of(new File("original.jpg"))
.size(160, 160)
.rotate(90)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(new File("watermark.png")), 0.5f)
.outputQuality(0.8f)
.toFile(new File("image-with-watermark.jpg"));
這段代碼是從original.jpg這張圖片生成最大尺寸160*160修己,順時(shí)針旋轉(zhuǎn)90°,水印放在右下角迎罗,50%的透明度睬愤,80%的質(zhì)量壓縮的縮略圖。
把生成的圖片輸出到輸出流(OutPutStream)中
OutputStream os = ...;
Thumbnails.of("large-picture.jpg")
.size(200, 200)
.outputFormat("png")
.toOutputStream(os);
按一定的比例生成縮略圖
BufferedImage originalImage = ImageIO.read(new File("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的下載地址:
http://code.google.com/p/thumbnailator/downloads/list
Java Doc
http://thumbnailator.googlecode.com/hg/javadoc/index.html
轉(zhuǎn)自: http://www.oschina.net/question/76860_25758