無(wú)敵了,Google 頂級(jí)項(xiàng)目開(kāi)源了?。?!
1、咱們的訴求
大家好,作為開(kāi)發(fā)者,平時(shí)在開(kāi)發(fā)的過(guò)程中,圖片處理的需求,想必很多朋友都會(huì)用到,比如這些功能:
圖片縮放(按照指定大小縮放、按比例縮放)
圖片旋轉(zhuǎn)
圖片添加水印
圖片裁剪
圖片格式轉(zhuǎn)換等
然而,圖片處理的開(kāi)源框架并不多,網(wǎng)絡(luò)上流傳的一些代碼,雖然可以實(shí)現(xiàn)這些功能,但是大多數(shù)用起來(lái)都特別的繁瑣。
為了解決這個(gè)問(wèn)題,我在網(wǎng)上找了很久,功夫不負(fù)有心人,終于找到了一款特別好用的開(kāi)源框架,拿出來(lái)和大家分享。
2、圖片處理一哥:Thumbnailator
Thumbnailator是 Google 開(kāi)源的一款圖片處理 java 類(lèi)庫(kù),谷歌這個(gè)公司,就不用多說(shuō)了吧,技術(shù)在全球都能夠排上號(hào)的,所以他們開(kāi)源的東西,基本上都是頂級(jí)的,Thumbnailator 算是目前開(kāi)源項(xiàng)目中,最優(yōu)秀的圖片處理軟件,暫時(shí)還沒(méi)有發(fā)現(xiàn)比這個(gè)更好用的。
這款軟件可以實(shí)現(xiàn)上面所提到的所有功能,并且用起來(lái)特別的方便,性能也特別的高。
先來(lái)幾個(gè)案例,感受一下他的威力
將圖片縮放到 200×300 的大小
Thumbnails.of("源圖片文件")
.size(200, 300)
.toFile("目標(biāo)圖片文件");
將圖片按等比例縮放到 1/4 大小
Thumbnails.of("images/a380_1280x1024.jpg")
.scale(0.25f)
.toFile("c:/a380_25%.jpg");
旋轉(zhuǎn)圖片 90 度
Thumbnails.of("images/a380_1280x1024.jpg")
.rotate(90)
.toFile("c:/a380_rotate+90.jpg");
添加水印圖片
//watermark(位置,水印圖,透明度)
Thumbnails.of("images/a380_1280x1024.jpg")
.size(1280,1024)
.watermark(Positions.BOTTOM_RIGHT,ImageIO.read(newFile("images/watermark.png")),0.5f)
.outputQuality(0.8f)
.toFile("c:/a380_watermark_bottom_right.jpg");
看了上面的代碼,大家的感覺(jué)是什么?
是不是代碼特別的簡(jiǎn)潔,確實(shí),如果大家用過(guò)谷歌開(kāi)源的其他框架,比如 guava,都會(huì)有同樣的特色,代碼特別的簡(jiǎn)潔,可能實(shí)現(xiàn)某個(gè)功能其內(nèi)部的代碼很復(fù)雜,但是谷歌的開(kāi)發(fā)者將復(fù)雜的細(xì)節(jié)都給屏蔽了,讓開(kāi)發(fā)者用起來(lái)就是爽,看來(lái)牛逼的公司就是不一樣啊。
好了,這個(gè)庫(kù)內(nèi)部還有更多好用的功能,這里就不細(xì)說(shuō)了,github 上都有,百度 thumbnailator 也會(huì)出來(lái)很多資料,這里就不一一介紹了。
本文的主要目的是讓大家知道圖片處理有這么好的一個(gè)解決方案,如果大家以后有處理圖片的需求,能夠想到這個(gè)解決方案,這篇文章的目的也就達(dá)到了,至少能夠讓大家少走一些彎路。
3、git 地址
這個(gè)庫(kù)是 java 開(kāi)發(fā)的,源碼在 github 上,大家都可以看到,有興趣的也可以對(duì)其進(jìn)行擴(kuò)展
https://github.com/coobird/thumbnailator

4、領(lǐng)取《月薪 5 萬(wàn)計(jì)算機(jī)必讀電子書(shū)》
計(jì)算機(jī)必讀電子書(shū),進(jìn)行了詳細(xì)的分類(lèi),自己整理的,絕不是在網(wǎng)上那種打包下載的,而是自己需要學(xué)到某個(gè)方向的時(shí)候去網(wǎng)上挨個(gè)找的,最后匯總而成,這部分我是會(huì)不斷把它完善的,當(dāng)成自己的小電子書(shū)庫(kù),不多,但貴在精。

獲取方式,點(diǎn)擊下面鏈接,發(fā)送:計(jì)算機(jī)
