我們平時使用Photoshop 切出的圖片,都含有一些不需要的信息或者多余的顏色值,這些信息和顏色值,對網頁顯示並沒有用處,反而增加圖片大小,Google Pagespeed 建議我們對於JPEG文件,使用jpegtran或jpegoptim(僅適用於Linux;使用--strip-all選項運行)。對於PNG文件,使用OptiPNG或PNGOUT。減小圖片大小,就可以減少用戶下載的文件大小,加快頁面訪問速度。
對於不同格式的圖片,我們需要用pegtran/jpegoptim/OptiPNG/PNGOUT 的工具,這樣對於前端開發費時費力,grunt-contrib-imagemin封裝了這些壓縮功能;大大方便了我們優化的工作.
安裝 :npm install grunt-contrib-imagemin --save-dev
配置 :詳細見https://github.com/gruntjs/grunt-contrib-imagemin
代碼例子:
module.exports = function (grunt) { 'use strict'; grunt.initConfig({ imagemin: { /* 壓縮圖片大小 */ dist: { options: { optimizationLevel: 3 //定義 PNG 圖片優化水平 }, files: [{ expand: true, cwd: 'imgs/', src: ['**/*.{png,jpg,jpeg,gif}'], // 優化 img 目錄下所有 png/jpg/jpeg/gif圖片 dest: 'imgs/' // 優化后的圖片保存位置,覆蓋舊圖片,並且不作提示 }] } }, }); grunt.loadNpmTasks('grunt-contrib-imagemin'); grunt.registerTask('img', ['imagemin']); };
存在的問題:
1、0.9.2版本,在win7系統32位,64位有問題,無法壓縮jpg,運行的時候報錯.
可以在https://github.com/imagemin/jpegtran-bin/releases下載文件后獲取里面的
jpegtran-bin-2.0.2->jpegtran-bin-2.02->vendor-win-x64里的兩個文件:
jpegtran.exe libjpeg-62.dll,覆蓋到node_modules\grunt-contrib-imagemin\node_modules\imagemin\node_modules\imagemin-jpegtran\node_modules\jpegtran-bin\vendor\下即可
2、壓縮后的png圖片,半透明的效果在IE6下顯示有問題,壓縮前正常,壓縮后圖片消失不可見,其他瀏覽器正常。原因不詳。0.9.2出現,在最新版本未測試過。
3、最新版本貌似0.9.4沒這個問題,但是默認壓縮后的大小卻相差很多,具體原因不詳。