圖1: 樣本原圖

去年 (2008-06-01) 我註冊了這個 PIXNET 部落格, 因為 PIXNET 存放圖片有容量的限制 (當時我還不是『一元 VIP』), 所以我另找了幾個免費又無限制的放圖網站, 經過篩選之後, 我決定使用 ImageShack.  但是使用半個月之後, 發現它開始不穩, 網站有點秀斗, 症狀包括: 偶爾會有一時之間找不到我上傳的圖片的狀況, 台灣時間晚上和夜間該網站幾乎慢到癱瘓無法上傳圖片, 我的部落格文章的圖片在夜間的載入速度也不佳, 甚至於圖片無法顯示.  趁當時我的部落格還只有兩篇文章, 插圖還不多的狀況下, 找到了 Slide 這個網站, 它免費, 無限制, 速度也最快!  從此就一直使用它, 不曾再搬家了.

今年 2 月 1 日在寫『[景觀] 在 Austin 的最後一個下午』這篇文章的時候, 我發現那張非常大張的 圖1 上傳後被 Slide 縮圖了, 變得糊糊的!  在那之後, 有幾次上傳我電腦的全螢幕截圖到 Slide, 因為超過寬度 (我的電腦螢幕解析度是 1920 x 1200 畫素), 又被 Slide 縮圖了, 縮圖後的品質不佳, 圖中的文字都看不清楚.  因此我決定測試一下 Slide 對於上傳圖片的不縮圖長寬極限.  經過測試後, 發現寬度的限制是 1600 畫素.

3 月 12 日晚上我寫信到 Slide, 向他們解釋說: 因為目前電腦螢幕的解析度普遍都有 1920 x 1200 了 (所以全螢幕截圖就會那麼大張), 希望他們不要限制上傳圖片的寬度.  客服人員 Michelle 當天夜間就回信了 (因為公司在舊金山), 說她會把我的意見轉到產品開發部門, 一付很樂意改進的語氣.

過了兩個月, 我以為 Slide 已經放寬上傳的圖片寬度限制, 測試了一下, 發現沒有任何變化!  與其讓 Slide 幫我縮圖, 把螢幕截圖中的文字搞得模糊不清, 不如我自己先縮圖再上傳!  因此前天 (2009-05-29) 我先摸索清楚用哪一種演算法縮圖, 圖中的文字最清晰.  弄清楚結論以後, 我還是希望 Slide 不要縮圖 (因為這樣最省事), 所以我又寫信給 Slide, 向他們抱怨我上傳的全螢幕截圖被縮圖後, 文字都看不清楚了.  來來回回幾次 emails 對話之後, Michelle 告訴我, 他們的程式有某個原因, 不得不限制寬度.  雖然她沒有明講, 不過我從事寫軟體的行業也做了 10 年了, 大概猜得到原因在哪裡, 我就退而求其次, 回了信告訴她, 希望 Slide 換一個好一點的演算法來縮圖, 不要選最爛的那種, 字都弄糊掉了!  我列出了我所做得到的 9 種縮圖的樣本, 並且建議他們可以選擇哪幾個比較好.

以前我一向使用 ACDSee Photo Manager, 不過自從換了目前這台電腦之後, 發現 ACDSee Photo Manager 不支援 Windows Vista 64-bit 系統, 因此這一年來我改用 XnView Complete Version, 它是免費的, 功能不見得比 ACDSee 少, 而且在 64-bit 系統跑得很順!  (後來又發現新版的 ACDSee Photo Manager 2009 在 Vista 32-bit 也有問題, 它瀏覽檔案時, 有些圖片檔案總是無法顯示, 所以檔案數量和我們使用檔案總管看到的數量有出入).

XnView 的 resize 功能, 提供了 9 種 resampling filters, 也就是 9 種縮圖的演算法, 包括:  (1) Lanczos, (2) bilinear, (3) Hanning, (4) Hermite, (5) Mitchell (論文原文), (6) Gaussian, (7) bell, (8) B-Spline, 和 (9) nearest-neighbor.

下面就來談談使用不同的演算法縮圖之後的差異.  樣本使用的圖片是 圖1, 測試每一種 resampling filters 一律拿 圖1 縮小為原圖的 80%.  結果見下列 9 張圖片.


圖2: 使用 Lanczos 縮圖的結果.

使用 Lanczos 做縮圖, 其輸出的結果, 線條是最銳利, 畫面最清晰的!  但是, 由於 Lanczos 過度強化了銳利度, 造成了一點額外的雜訊, 例如上圖 (圖2), 左上角 "Mozilla Firefox" 文字的線條和底色之間, 產生了亮點.


圖3: 使用 bilinear 縮圖的結果.


圖4: 使用 Hanning 縮圖的結果.


圖5: 使用 Hermite 縮圖的結果.

使用 bilinear, Hanning, 和 Hermite 這三者輸出的結果, 老實說我看不出任何的差異.  畫面的色澤最貼近原圖, 失真程度最少, 不過文字線條的銳利度比 Lanczos 稍微差一點點.


圖6: 使用 Mitchell 縮圖的結果.


圖7: 使用 Gaussian 縮圖的結果.


圖8: 使用 bell 縮圖的結果.


圖9: 使用 B-Spline 縮圖的結果.


圖10: 使用 nearest-neighbor 縮圖的結果.

使用 nearest-neighbor 縮圖輸出的結果, 相當慘不忍睹.  Slide 就是用 nearest-neighbor 縮圖的.

最後來總整理一下, 我幫以上 9 種 resampling filters 的縮圖效果優劣排了一下順序.  順位排越後面, 越不清晰.
樣本原圖 (圖1) 的檔案大小是 45.1 KB.

(1) 第 1 名是: Lanczos.  其輸出的檔案大小變成 84.3 KB.
 文字的線條是最銳利, 畫面最清晰的!  不過由於過度強化了銳利度, 造成了一點額外的小雜訊.

(2) 第 2 名有三種並列: Bilinear (65.2 KB), Hanning (65.7 KB), 和 Hermite (65.7 KB).
 這三種畫面清晰度差不多, 畫面的色澤最貼近原圖, 失真程度最少, 不過文字線條的銳利度比 Lanczos 稍微差一點點.

(3) 第 5 名是: Mitchell (72.8 KB).

(4) 第 6 名是: Gaussian (70.7 KB).

(5) 第 7 名是: Bell (71.6 KB).

(6) 第 8 名是: B-Spline (72.8 KB).

(7) 第 9 名是: Nearest-neighbor (36.7 KB).
 使用它縮圖的畫質最糟糕, 但唯一的優點是檔案變小了.

Posted by sautiller at 痞客邦 PIXNET Comments(1) Trackback(0) Hits(341)


open trackbacks list Trackbacks (0)

Comments (1)

Post Comment
  • Very Good,所以我很期待 Slide 公司會怎麼回覆你?
    說不定聘請你去幫他們寫縮圖的部份 :"P 這樣還真賺 XD
  • >> 所以我很期待 Slide 公司會怎麼回覆你?

    前天 Michelle 就回說:
     >> Thanks for your input. I will pass it along to the appropriate party.
    我相信她不會再回覆第二次了.

    sautillerreplied on 2009/06/01 01:27

Comment Permissions: Allow commenting

Leave Comment

*Name/Nickname
E-mail
Personal Website
Comment Title
*Comment
* Private Comment