咱們在平時的開發中,偶爾也會遇到圖片處理的問題,好比圖片的壓縮,按比例改變圖片的大小,不按比例改變圖片的大小等等。前端
若是要本身去開發這樣一套工具,我以爲大多數人都是作不到的,因此仍是學會站在巨人的肩膀上來的比較輕巧。java
因此在這裏給你們推薦google使用的開源工具包thumbnailator,這個工具包能夠知足各類各樣的圖片處理要求,除了上面說的還包括旋轉,裁切,加水印等等。後端
並且圖片處理事後能保持不錯的質量,圖片處理性能也ok,代碼也比較容易使用,多用用就熟悉了。api
這裏給你們舉一下不按照比例改變圖片的大小的代碼的例子,你們在之後遇到圖片處理問題的時候能夠觸類旁通去完善這個圖片處理工具類。maven
在maven中依賴此工具包:函數
1 <!-- 圖片處理工具 --> 2 <dependency> 3 <groupId>net.coobird</groupId> 4 <artifactId>thumbnailator</artifactId> 5 <version>0.4.6</version> 6 </dependency>
寫一個公共的圖片處理工具類:工具
1 package com.cfwx.weixin.common.utils; 2 3 import java.io.IOException; 4 5 import net.coobird.thumbnailator.Thumbnails; 6 7 /** 8 * 圖片處理工具類 9 * 10 * @author lixiao 11 * @version 1.0 12 * @date 2018/04/18 13 */ 14 public class PictureUtil 15 { 16 17 /** 18 * 私有化工具類對象 19 */ 20 private PictureUtil() 21 { 22 } 23 24 /** 25 * 不按照比例,指定大小進行縮放 26 * 27 * @param inFilepath 28 * @param width 29 * @param height 30 * @param outFilepath 31 * @throws IOException 32 */ 33 public static void keepAspectRatioFalse(String inFilepath, int width, int height, String outFilepath) throws IOException 34 { 35 Thumbnails.of(inFilepath).size(width, height).keepAspectRatio(false).toFile(outFilepath); 36 } 37 38 }
將構造函數私有化能夠避免建立此工具類的對象,這樣就只能經過類名調用此工具類的靜態方法,咱們這裏封裝了一個不按照比例,指定大小進行縮放的方法,inFilePath是指原圖片保存的路徑,在項目中通常使用臨時文件,業務處理結束後,通常會將臨時文件刪除,避免暫用項目空間,形成項目臃腫,width寬度,height高度,outFilepath爲輸出圖片保存路徑,同理此文件根據狀況也能夠做爲臨時文件,好比前端要下載指定大小的圖片,那麼後端處理結束後須要將以前處理的圖片刪除,避免形成項目臃腫。性能
Thumbnails類的of方法指定原圖片路徑,size方法指定圖片的大小,keepAspectRatio指定是否按照比例縮放,toFile方法用來輸出處理後的圖片到指定路徑。google
thumbnailator工具包中還有不少方法來實現各類各樣的圖片處理,這裏就不給你們一一列舉,你們本身把thumbnailator工具包下載下來,結合相關的api資料去完善本身的圖片處理工具類,而後去玩一玩圖片的各類處理。spa
結束語:知識是一種使求知者吃得越多越以爲餓的糧食。
可愛博主:AlanLee
博客地址:http://www.cnblogs.com/AlanLee
本文出自博客園,歡迎你們加入博客園。