使用grunt來無損壓縮圖片

jopen 9年前發布 | 39K 次閱讀 圖形/圖像處理 Grunt

作為一個前端工程師,或者web開發工程師,圖片是你無法忽視的一個東西,沒有一本優化方面的書不會提及圖片的優化。

pagespeed里面,首當其沖的也是提示你的圖片需要優化。

之前有做過很多嘗試,處理png圖片等,可以查看以前的博客:優化png圖片的歷程


但是之前的方法有兩個問題:

1、主要是優化PNG圖片

2、效率低下,不適合批量操作


為了解決上訴問題,現在使用一個新的方法去批量壓縮圖片。

這個方法就是,噔噔噔噔,Grunt-contrib-imagemin

操作步驟如下:


1、首先你得有nodejs環境,如果你沒有,請參考:https://nodejs.org/

2、然后打開node.js command prompt

3、通過npm安裝grunt,如果你沒有grunt的話。要安裝,請參考:http://www.gruntjs.net/

4、然后新建一個文件夾,我的個人看法是,你所新建的這個文件夾將作為你壓縮圖片的一個寄存地,也就是一個緩存區。當你要壓縮某些圖片的時候,可以把圖片復制過來,然后運行一下壓縮命令即可。而不用每次都在你的項目目錄中安裝imagemin

安裝Grunt-contrib-imagemin,需要系統中已經安裝grunt的,所以你首先要參考第3條。

輸入了安裝imagemin的命令后,會從遠程服務器中下載這個包到你的新建的目錄中了。

5、新建Gruntfile.js文件,打開你剛才新建的目錄,我這里是gruntImgmin

然后在這個根目錄中,新建上述js文件,然后新建grunt任務:

    module.exports = function (grunt) {  
        'use strict';  
        grunt.initConfig({  
            imagemin: {  
                /* 壓縮圖片大小 */  
                dist: {  
                    options: {  
                        optimizationLevel: 3 //定義 PNG 圖片優化水平  
                    },  
                    files: [  
                           {  
                        expand: true,  
                        cwd: 'images/',  
                        src: ['**/*.{png,jpg,jpeg}'], // 優化 img 目錄下所有 png/jpg/jpeg 圖片  
                        dest: 'images/' // 優化后的圖片保存位置,覆蓋舊圖片,并且不作提示  
                        }  
                        ]  
                    }  
                },  
                });  
        grunt.loadNpmTasks('grunt-contrib-imagemin');  
        grunt.registerTask('img', ['imagemin']);  
    };  

上面的任務中,我是把原圖片文件夾和目標文件夾寫成了同一個,也就是要覆蓋原圖片,如果你不想這樣,可以自己更改路徑就可以了。



6、把圖片放在相應的文件夾之后,在nodejs的命令行中輸入命令:


7、文件對比

壓縮前總文件大小為535k,壓縮后為508k,減少了47k。

因為壓縮的圖片大部分為jpg,所以壓縮率可能不是特別高,當png比較多,或者整體文件比較多的時候,這種差異會更大。減少了47k已經減少了很多,為你的網頁的性能呢個又優化了一步。



參考:

http://www.zfanw.com/blog/gruntjs-optimize-image-size-loseless.html

http://www.gruntjs.net/

https://nodejs.org/


來自:http://blog.csdn.net/wuweitiandian/article/details/46422383

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!