亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

前端優(yōu)化之圖片優(yōu)化自動(dòng)化

系統(tǒng) 1918 0

本文轉(zhuǎn)載自以下地址:

http://www.welefen.com/image-optimization.html


前端圖片優(yōu)化介紹

隨著前端頁(yè)面越來(lái)越復(fù)雜,尤其是一些社區(qū)型的頁(yè)面中,圖片成了頁(yè)面中不可或缺的資源,并且隨著產(chǎn)品功能的疊加圖片大小越來(lái)越多。以下是幾個(gè)網(wǎng)站的圖片所占的比重。

前端優(yōu)化之圖片優(yōu)化自動(dòng)化

由于圖片是二進(jìn)制文件,并不能像js、css、html那些源代碼文件一樣可以通過(guò)gzip壓縮大大減小文件的大小。所以圖片優(yōu)化主要是選擇合適的圖片格式,在不降低圖片質(zhì)量的情況下去掉圖片里的元數(shù)據(jù)信息。

常用的一些優(yōu)化方案

目前圖片優(yōu)化使用比較多的主要是下面幾種方式:

  1. 選擇合適的圖片格式,如:png代替gif,盡量使用png8
  2. png使用pngout優(yōu)化,jpg使用jpgtran
  3. 通過(guò)yahoo的smush進(jìn)行
  4. 通過(guò)google的page speed插件進(jìn)行

前端優(yōu)化之圖片優(yōu)化自動(dòng)化

這些優(yōu)化方案雖然結(jié)果都能將圖片優(yōu)化,但需要比較多的人工操作。如使用smush,先要上傳文件,優(yōu)化完了后還要下載文件。在項(xiàng)目時(shí)間限制或者改動(dòng)很頻繁的情況下很多時(shí)候就把圖片優(yōu)化這一非常重要的優(yōu)化步驟給忽略了。

那如何盡量減少人工操作帶來(lái)的麻煩和不確定因素呢?

如果在前端模塊編譯的時(shí)候,有圖片自動(dòng)優(yōu)化的功能,上線前模塊編譯的時(shí)候得到就是優(yōu)化后的圖片,開(kāi)發(fā)人員完全不用管圖片優(yōu)化了,但又不影響線上圖片優(yōu)化的結(jié)果。

如何結(jié)合一些工具做到圖片優(yōu)化完全自動(dòng)化呢?先要考慮目前開(kāi)發(fā)中經(jīng)常用到的圖片格式。

圖片格式

開(kāi)發(fā)中經(jīng)常用到的圖片格式主要有如下幾種:

  1. 不透明的gif,全透明的gif,動(dòng)畫(huà)gif
  2. 不透明的png,全透明的png,半透明(alpha透明)的png
  3. jpg圖片

對(duì)于全透明的png,ie6要通過(guò)下面的filter進(jìn)行hack。

前端優(yōu)化之圖片優(yōu)化自動(dòng)化

對(duì)于alpha透明的png,ie6下必須使用png24,目前還沒(méi)有找到ie6下hack alpha透明png8的方式,如果有哪位大拿對(duì)這個(gè)有解決方案,麻煩告訴我。

經(jīng)過(guò)篩選和優(yōu)化原則要滿足上面的圖片格式的條件,選擇的軟件如下:

  1. 動(dòng)畫(huà)gif使用gifsicle
  2. png使用pngcrush
  3. jpeg使用jpegtran

軟件安裝

需要安裝imagmagick, gifsicle, jpegtran, pngcrush,安裝腳本如下:

    #!/bin/sh
  
    #安裝imagemagick
  
    wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.6.4-10.tar.gz
  
    tar zxvf ImageMagick-6.6.4-10.tar.gz
  
    cd ImageMagick-6.6.4-10
  
    ./configure
  
    make
  
    make install
  
    cd ../
  
    #安裝gifsicle
  
    wget http://www.lcdf.org/gifsicle/gifsicle-1.60.tar.gz
  
    tar zxvf gifsicle-1.60.tar.gz
  
    cd gifsicle-1.60
  
    make
  
    make install
  
    cd ../
  
    #安裝jpegtran
  
    wget http://jpegclub.org/droppatch.v8.tar.gz
  
    tar zxvf droppatch.v8.tar.gz
  
    sudo cp ./jpegtran /usr/local/bin
  
    #安裝pngcrush
  
    wget http://sourceforge.net/projects/pmt/files/pngcrush/00-1.7.13/pngcrush-1.7.13.tar.gz/download
  
    tar zxvf pngcrush-1.7.13.tar.gz
  
    cd pngcrush-1.7.13
  
    sudo make
  
    sudo cp ./pngcrush /usr/local/bin
  

將上面的代碼拷貝到一個(gè)文件如:image.s,執(zhí)行dos2unix image.sh,然后執(zhí)行sh image.sh安裝軟件

圖片優(yōu)化

圖片優(yōu)化的代碼如下:

      #/bin/bash
    
      OPTI_PATH=$1
    
      cd $OPTI_PATH;
    
      CURRENT_PATH=$PWD;
    
      SH_LIST='jpegtran gifsicle pngcrush';
    
      COMMOND_EXIST=1
    
      #先檢查相關(guān)的軟件是否已經(jīng)正確安裝
    
      for ITEM in $SH_LIST
    
      do
    
          SH_EXIST=`which $ITEM 2>/dev/null | wc -l`;
    
          if [[ $SH_EXIST == '0' ]]; then
    
              echo "$ITEM commond not exist";
    
              COMMOND_EXIST=0;
    
          fi
    
      done
    
      if [[ "COMMOND_EXIST" == "0" ]]; then
    
      exit 1;
    
      fi
    
      #優(yōu)化jpg
    
      JPG_FILES=`find . -type f -name "*.jpg" -or -name "*.jpeg"`;
    
      for FILE in $JPG_FILES
    
      do
    
          OUTPUT_FILE="$FILE.png"
    
          jpegtran -optimize -progressive -copy none -outfile $OUTPUT_FILE $FILE > /dev/null
    
          mv $OUTPUT_FILE $FILE
    
      done
    
      #優(yōu)化gif
    
      GIF_FILES=`find . -type f -name "*.gif"`;
    
      for FILE in $GIF_FILES
    
      do
    
          DEPTH=`identify $FILE | wc -l`;
    
          if [[ "$DEPTH" == "1" ]]; then
    
              OUTPUT_FILE="$FILE.png";
    
              OUTPUT_FILE_LEN=${#OUTPUT_FILE}-8;
    
              NEW_FILE_SUB=${OUTPUT_FILE:0:$OUTPUT_FILE_LEN};
    
              NEW_FILE="$NEW_FILE_SUB.png"
    
              convert $FILE $NEW_FILE > /dev/null;
    
          else
    
              OUTPUT_FILE="$FILE.gif"
    
              gifsicle -o $OUTPUT_FILE $FILE > /dev/null
    
              mv $OUTPUT_FILE $FILE
    
          fi
    
      done
    
      #優(yōu)化png
    
      PNG_FILES=`find . -type f -name "*.png"`;
    
      for FILE in $PNG_FILES
    
      do
    
          OUTPUT_FILE="$FILE.png"
    
          pngcrush -rem alla -brute -reduce $FILE $OUTPUT_FILE > /dev/null
    
          mv $OUTPUT_FILE $FILE
    
      done
    
      cd $CURRENT_PATH;
    

將上面的代碼保存如:image-optimation.sh,執(zhí)行dosunix image-optizimation.sh,
然后執(zhí)行sh image-optizimation.sh imgdir 就可以將imgdir目錄下的圖片進(jìn)行優(yōu)化,上線的時(shí)候只要拷貝優(yōu)化后的圖片就可以了。

優(yōu)化結(jié)果

以下是前端一個(gè)模塊的優(yōu)化前后的文件大小比較:

前端優(yōu)化之圖片優(yōu)化自動(dòng)化

優(yōu)化后,圖片大小減小了66.6K,優(yōu)化率達(dá)到35.2%。

從數(shù)據(jù)中可以發(fā)現(xiàn),png圖片優(yōu)化還是非常多的,也是優(yōu)化準(zhǔn)則里盡量使用png圖片的原因。

其他優(yōu)化工具

除了上面用到的圖片優(yōu)化工具,還有其他很多可以優(yōu)化圖片的工具。但各種各樣的小問(wèn)題,最終并沒(méi)有使用它們。

  1. pngrewrite
  2. optpng
  3. pngout
  4. pngquant

參考文檔

  1. http://www.slideshare.net/stoyan/image-optimization-for-the-web-at-phpworks-presentation ?圖片優(yōu)化方面的ppt
  2. http://www.smushit.com/ysmush.it/ ?smush
  3. https://github.com/thebeansgroup/smush.py ?smush的python實(shí)現(xiàn)
  4. http://code.google.com/speed/page-speed/docs/payload.html#CompressImages ?google關(guān)于圖片優(yōu)化的文檔
  5. http://www.welefen.com/fcp-introduce.html ?FCP前端編譯平臺(tái)里包含了圖片優(yōu)化功能

前端優(yōu)化之圖片優(yōu)化自動(dòng)化


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久热国产在线视频 | 成人免费毛片观看 | 看a网站| 337p日本欧洲亚洲大胆艺术 | 小说区图片区综合久久亚洲 | 99久热在线精品视频播 | 亚洲国产精品欧美日韩一区二区 | 日本在线三级 | 亚洲精品aⅴ一区二区三区 亚洲精品ccc | 国产网红福利视频网站 | 亚洲免费在线观看视频 | 亚洲综合色丁香麻豆 | 毛片网页 | 国产成人精品午夜在线播放 | 亚洲欧美日韩成人一区在线 | 高清不卡免费一区二区三区 | 热99这里有精品综合久久 | 国产波波社区精品视频 | 天天综合日日噜噜噜 | 国产精品福利一区二区久久 | 四影虎库最新2021 | 亚洲香蕉久久一区二区 | 亚洲一级毛片在线观 | 青青青在线视频国产 | 亚洲日本高清影院毛片 | 五月天婷婷在线观看高清 | 亚洲精品成人一区二区 | 人成午夜视频 | 欧美激情精品久久久久久久九九九 | 精品国产一区二区在线观看 | 天天干天天操天天射 | 青青青国产色视频在线观看 | 一本一本久久a久久综合精品蜜桃 | 国产欧美日韩高清专区ho | 青青草久热精品视频在线观看 | 亚洲免费视频播放 | 国产精品久久精品牛牛影视 | 99热这里有免费国内精品 | 在线亚洲精品视频 | 亚洲视频中文 | 欧美性大战久久久久久久蜜桃 |