D-Link 友訊科技工程師。喜好戶外運動、2008 年 5 月完成「跑步環島」。對於新技術跟程式碼有著強烈的偏執狂。
上個月在 YUI Blog 上有 4 篇 Image Optimization 的連載,若你重視網站的效能,這篇是非常經典且必讀的文章。 主要在於圖片格式的介紹、使用免費的命令列工具縮小圖片但不失真。難能可貴的是,作者 Stoyan Stefanov 也做了許多的實際測試,讓這系列的文章非常有說服力。以下為文章列表:
選擇圖片格式的黃金原則:照片用 JPEG、動畫用 GIF、其餘全部用 PNG8。
整個流程不失真、使用免費工具、而且可以很容易做到自動化。
PNG 有很多用不到的 Chunk,用 pngcrush 來移除
pngcrush -rem alla -brute -reduce src.png dest.png
JPEG 中有 EXIF、Meta data 等資訊,jpegtran 幫助改善壓縮比與移除這些資訊(要小心著作權)。
jpegtran -copy none -optimize src.jpg dest.jpg
改善 GIF 的最好作法就是將他換成 PNG,這裡使用 ImageMagick 達成。
convert image.gif PNG8:image.png
gifsicle -O2 src.gif > dest.gif
Baseline JPEG 就是一般大家熟悉的模式,一張圖片由上到下顯示。Progressive JPEG 則先給使用者看到模糊的圖片,隨著檔案的讀取逐漸變清晰。Progressive 的使用在 Usability 是有爭議的(傳統做法、使用者的印象效果不佳)。作者歸納出的結果是,如果檔案超過 10K 使用 Progressive JPEG 將有很大的機會得到更小的檔案。
另外 IE 雖然不支援 Progressive JPEG,但事情也沒這麼糟,只是等到檔案完全讀取才會顯示(也非 Baseline 的上到下)。
jpeg -copy none -optimize source.jpg result.jpg
jpegtran -copy none -progressive source.jpg result.jpg
看完上面的說明,你可能已經迫不及待想要開始動手最佳化你的檔案了。 但實際上作者已經實作了一個線上的工具:Smush It!,你可以用 URL、上傳、Firefox Extension、Bookmarklet 的方式用上面的流程來做最佳化。而且已提供 Web Service 供使用、也有 Zip 打包下載。
他們也有將整個工具 Open Source 的計畫,這部份就請各位期待囉!http://smush.it/ws.php - gives a help message http://smush.it/ws.php?img=http://smush.it/css/skin/screenshot.png - example smushed response http://smush.it/ws.php?img=http://smush.it/css/skin/logo.png - image that cannot be further smushed
而且学习到PNG-8比GIF更小这件事
Thanks