使用Google Thumbnails 壓縮圖片


  背景說明:最近項目中需要用到一些圖片文件的上傳 ,但是有些圖片很大,比如輪播圖,大有的有幾兆,這樣加載一個首頁都要很久,顯然這樣對用戶體驗是非常不友好的,對服務器資源將是一種浪費。

為了解決這個問題,我也是在網上找了好久,看了很多資料,功夫不負有心人,最終找到了一個處理圖片十分棒的開源框架。特此拿出來與大家分享。

  簡介:圖片處理是當今軟件開發中非常重要的一環,然而處理圖片的開源框架卻並不多。現金網上流傳的Java處理圖片的代碼,雖然可對圖片進行簡單處理,但效果並不理想。雖然也有些其他解決方案,但都擺脫不了繁瑣,使用起來十分不方便。

Thumbnailator 是一個優秀的圖片處理的Google開源Java類庫。處理效果遠比Java API的好。從API提供現有的圖像文件和圖像對象的類中簡化了處理過程

Thumbnailator官網:http://code.google.com/p/thumbnailator/

首先添加依賴:

        <dependency>
            <groupId>net.coobird</groupId>
            <artifactId>thumbnailator</artifactId>
            <version>0.4.8</version>
        </dependency>

壓縮方法:

public static void thumbnail(MultipartFile file) {
        String originalFilename = file.getOriginalFilename();                               //原文件名
        String ext = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);//獲取后綴
        String name = UUID.randomUUID().toString().replaceAll("-", "");//新文件名
        try {
            //先壓縮並保存圖片
            Thumbnails.of(file.getInputStream()).scale(1.00f)   //壓縮尺寸 范圍(0.00--1.00)
                    .outputQuality(0.50f)                       //壓縮質量 范圍(0.00--1.00)
                    .outputFormat(ext)                          //輸出圖片后綴
                    .toFile("D:\\var\\images\\" + name);     //輸出路徑
        } catch (IOException e) {
            log.error(e.getMessage());
        }
    }

 

原圖大小:2.6MB

 

 

 

 壓縮后大小:314KB

 

 

壓縮質量我調的是0.50,反正我是沒有看出來有啥區別的。google的這個工具真牛B

 補充:如果圖片背景是透明的,壓縮圖片后背景會變黑,質量也不好。這個問題也是后期我測試發現的,然后查找資料找到了解決辦法,如下:

Thumbnails.of(file.getInputStream()).imageType(BufferedImage.TYPE_INT_ARGB) //解決透明背景變黑問題
                .scale(1.00f)                               //壓縮尺寸 范圍(0.00--1.00)
                .outputQuality(quality)                     //壓縮質量 范圍(0.00--1.00)
                .outputFormat(ext)                          //輸出圖片后綴
                .toFile(result);                            //輸出路徑

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM