Java圖片處理開源框架Thumbnailator
圖片處理是當(dāng)今軟件開發(fā)中非常重要的一環(huán),然而處理圖片的開源框架卻并不多?,F(xiàn)金網(wǎng)上流傳的Java處理圖片的代碼,雖然可對(duì)圖片進(jìn)行簡(jiǎn)單處理,但效果并不理想。雖然也有些其他解決方案,但都擺脫不了繁瑣,使用起來十分不方便。
為了解決這個(gè)問題,我也是在網(wǎng)上找了好久,看了很多資料,功夫不負(fù)有心人,最終找到了一個(gè)處理圖片十分棒的開源框架。特此拿出來與大家分享。
Thumbnailator 是一個(gè)優(yōu)秀的圖片處理的Google開源Java類庫(kù)。處理效果遠(yuǎn)比Java API的好。從API提供現(xiàn)有的圖像文件和圖像對(duì)象的類中簡(jiǎn)化了處理過程,兩三行代碼就能夠從現(xiàn)有圖片生成處理后的圖片,且允許微調(diào)圖片的生成方式,同時(shí)保持了需要寫入的最低限度的代碼量。還支持對(duì)一個(gè)目錄的所有圖片進(jìn)行批量處理操作。
支持的處理操作:圖片縮放,區(qū)域裁剪,水印,旋轉(zhuǎn),保持比例。
另外值得一提的是,Thumbnailator至今仍不斷更新,怎么樣,感覺很有保障吧!
下面我們介紹下如何使用Thumbnailator
原圖:
1、指定大小進(jìn)行縮放
//size(寬度, 高度) /* * 若圖片橫比200小,高比300小,不變 * 若圖片橫比200小,高比300大,高縮小到300,圖片比例不變 * 若圖片橫比200大,高比300小,橫縮小到200,圖片比例不變 * 若圖片橫比200大,高比300大,圖片按比例縮小,橫為200或高為300 */ Thumbnails.of("images/a380_1280x1024.jpg") .size(200, 300) .toFile("c:/a380_200x300.jpg"); Thumbnails.of("images/a380_1280x1024.jpg") .size(2560, 2048) .toFile("c:/a380_2560x2048.jpg");
2、按照比例進(jìn)行縮放
//scale(比例) Thumbnails.of("images/a380_1280x1024.jpg") .scale(0.25f) .toFile("c:/a380_25%.jpg"); Thumbnails.of("images/a380_1280x1024.jpg") .scale(1.10f) .toFile("c:/a380_110%.jpg");
3、不按照比例,指定大小進(jìn)行縮放
//keepAspectRatio(false)默認(rèn)是按照比例縮放的 Thumbnails.of("images/a380_1280x1024.jpg") .size(200,200) .keepAspectRatio(false) .toFile("c:/a380_200x200.jpg");
4、旋轉(zhuǎn)
//rotate(角度),正數(shù):順時(shí)針負(fù)數(shù):逆時(shí)針 Thumbnails.of("images/a380_1280x1024.jpg") .size(1280,1024) .rotate(90) .toFile("c:/a380_rotate+90.jpg"); Thumbnails.of("images/a380_1280x1024.jpg") .size(1280,1024) .rotate(-90) .toFile("c:/a380_rotate-90.jpg");
5、水印
//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"); Thumbnails.of("images/a380_1280x1024.jpg") .size(1280,1024) .watermark(Positions.CENTER,ImageIO.read(newFile("images/watermark.png")),0.5f) .outputQuality(0.8f) .toFile("c:/a380_watermark_center.jpg");
6、裁剪
//sourceRegion() //圖片中心400*400的區(qū)域 Thumbnails.of("images/a380_1280x1024.jpg") .sourceRegion(Positions.CENTER,400,400) .size(200,200) .keepAspectRatio(false) .toFile("c:/a380_region_center.jpg"); //圖片右下400*400的區(qū)域 Thumbnails.of("images/a380_1280x1024.jpg") .sourceRegion(Positions.BOTTOM_RIGHT,400,400) .size(200,200) .keepAspectRatio(false) .toFile("c:/a380_region_bootom_right.jpg"); //指定坐標(biāo) Thumbnails.of("images/a380_1280x1024.jpg") .sourceRegion(600,500,400,400) .size(200,200) .keepAspectRatio(false) .toFile("c:/a380_region_coord.jpg");
7、轉(zhuǎn)化圖像格式
//outputFormat(圖像格式) Thumbnails.of("images/a380_1280x1024.jpg") .size(1280,1024) .outputFormat("png") .toFile("c:/a380_1280x1024.png"); Thumbnails.of("images/a380_1280x1024.jpg") .size(1280,1024) .outputFormat("gif") .toFile("c:/a380_1280x1024.gif");
8、輸出到OutputStream
//toOutputStream(流對(duì)象) OutputStreamos=newFileOutputStream("c:/a380_1280x1024_OutputStream.png"); Thumbnails.of("images/a380_1280x1024.jpg") .size(1280,1024) .toOutputStream(os);
9、輸出到BufferedImage
//asBufferedImage()返回BufferedImage BufferedImagethumbnail=Thumbnails.of("images/a380_1280x1024.jpg") .size(1280,1024) .asBufferedImage(); ImageIO.write(thumbnail,"jpg",newFile("c:/a380_1280x1024_BufferedImage.jpg"));
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Java創(chuàng)建數(shù)據(jù)透視表并導(dǎo)出為PDF的方法
數(shù)據(jù)透視分析是一種強(qiáng)大的工具,可以幫助我們從大量數(shù)據(jù)中提取有用信息并進(jìn)行深入分析,本文將介紹如何使用Java來構(gòu)建PivotTable以及實(shí)現(xiàn)數(shù)據(jù)透視分析,并將其導(dǎo)出為PDF2023-10-10Idea連接數(shù)據(jù)庫(kù)并執(zhí)行SQL語句的方法示例
這篇文章主要介紹了Idea連接數(shù)據(jù)庫(kù)并執(zhí)行SQL語句的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11mybatis攔截器注冊(cè)初始化編寫示例及如何生效詳解
這篇文章主要為大家介紹了mybatis攔截器注冊(cè)初始化編寫示例及如何生效詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Java Druid連接池與Apache的DBUtils使用教程
這篇文章主要介紹了Java Druid連接池與Apache的DBUtils使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-12-12spring boot項(xiàng)目使用@JsonFormat失效問題的解決
這篇文章主要介紹了spring boot項(xiàng)目使用@JsonFormat失效問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法
這篇文章主要介紹了SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05