MozTW 討論區
https://forum.moztw.org/

JPEG 對 PNG ,壓縮能力比一比。
https://forum.moztw.org/viewtopic.php?f=8&t=23563
2 頁 (共 4 頁)

發表人:  wini [ 2008-07-21, 18:46 ]
文章主題 : 

Anonymous 寫:
其他先進若只是打算拿隨得可得的搜尋資訊來主持正義,本人敬謝不敏。若有專精於此類技術相關的先進不另賜教,十分樂意就教。


未附上好讀的說明檔這件事的確我應該向大家道歉,並向你道謝一下。

不過我已經說過了,拿 jpg 破壞過的「彩圖」來壓成 png 會變大很正常,所以我才會拿出類似那張 jpg 情況的圖說明 png 要怎樣才會更小。

要打比方的話,你把鈔票撕個對半,拿去銀行可以換到同樣面額的,但是那並不是原先編號的鈔票;你把破壞掉的圖再用無損壓縮,也變不回原先破壞前的圖,所以我的解釋是「一開始用色跟架構單調的原始圖檔,破壞後反而變成用色跟架構都複雜的圖片,這種東西轉成 png 是壓不小的」;但是用色跟架構複雜的圖片,只要破壞程度不到一個界限,都可以欺騙到人眼,這就是 jpg 的關鍵技術。(不過藍底白字的標題列跟原圖一比較就會知道變色很明顯了)

而要重現這問題,最簡單的做法就是把這串第二篇我提供的圖片轉成 jpg ,再把那張 jpg 轉成 png ,應該就可以看到變化了,但是這是「用色跟架構都簡單」的例子,不是這種例子的我當然不會建議別人試 png ,因為我是為了「讓人下載時能快一點」才建議使用 png 的,沒道理推薦壓了反而變大的。(但是處理過程出錯而變大的話,我會建議下次處理時注意一下怎樣才能弄小。)

這種實際比較後得出的結論,並不需要動用到多深的知識,只要動手實驗「比較哪種壓縮格式,可以讓原始檔轉換後更小又看不太出劣化」這回事,就可以瞭解。我不確定你有沒有實驗過,但是等你實驗過再來求更深入的學術解釋,我也可以不必在這一直說服你去「下載第二篇的圖片」或「自己抓張螢幕擷圖測試」。

總之我一直都是在說「png 適合壓縮用色跟架構單調的圖片」,不知道你到底是想表達什麼地方不對。


(至於中文維基不可信,那英文維基跟日文維基又如何?學校的書又如何?到底哪裡找到的技術資料才可信?不過標題是我割出來時隨便寫的,倒也沒說一定要有多深入的資料才准來討論,不然這串應該直接刪掉才對,畢竟根本沒人的文章及格。就算真的要提可信的學術資料,也不應該全叫辯論的其中一方提供……話說為什麼我非得花一兩個小時邊測試邊編輯文章,只為了勸一個不採信我資料的人提供他手上的可信資料呢。)

----
不過我一直在問的螢幕擷圖程式,怎麼還是沒人提供一下…… orz

發表人:  qualle [ 2008-07-21, 21:23 ]
文章主題 : 

wini 寫:
----
不過我一直在問的螢幕擷圖程式,怎麼還是沒人提供一下…… orz


我現在是用Faststone Image Viewer本身的Screenshot功能在撐,
因為我很少用這類功能,
所以就算那套有點小小的「功能不足」,
也還算撐的住。

另外Fx有個套件叫「Fireshot」,
不過它只能Capture網頁。
而且編修時加入中文字的部份有些問題,
僅供參考用。

發表人:  訪客 [ 2008-07-21, 21:59 ]
文章主題 : 

jpeg格式基本上是用在處理連續性色彩的,
所以平常看到的不是256灰階就是16.7M全彩,
如果圖形只有三四種顏色,也得壓成16.7M全彩,
這種情況當然會比具有索引色盤格式的png來得不利,
如果硬是把檔案壓小,就會看到嚴重的騷動感。
(在上千色以下可能都是這種情況,
像無照片的純網頁,視窗抓圖,滑鼠手繪圖都是)
但是如果圖片種類是「照片」之類顏色數超多的話,
png因為不失真壓縮所以怎麼壓也不會小,
而jpeg因為原本就設計以縮減人眼較難察覺的資訊來達到高壓縮能力,
所以會比png有利。

發表人:  訪客 [ 2008-07-21, 22:05 ]
文章主題 : 

螢幕擷圖?
不是很多程式都有?
像免費的XnView就有了。
工具->擷取螢幕

發表人:  goldie [ 2008-07-21, 22:22 ]
文章主題 : 

roytam1 寫:
這是我家的玩法 XD
代碼:
@echo off
for %1 %%i in (*.png) do (
touch -r "%%~i" "%%~i.time"
optipng -zw32k -zc9 -zm9 -zs0,3 -f0,5 -i0 "%%~i"
advdef -z -4 "%%~i"
deflopt -b "%%~i"
pngout /y /b0 "%%~i"
advdef -z -4 "%%~i"
deflopt -b "%%~i"
touch -r "%%~i.time" "%%~i"
if exist "%%~i.time" del "%%~i.time"
)

最近看到這串文章後,我也改用了 OptiPNG + AdvPNG 依順各跑一回。 :oops:
之前是過 PNGOut,
但是,發現沒 OptiPNG 開到最大(-o7)來得小些,
所以,之後就以 OptiPNG -o7 -fix 用了好一陣子。

在你的玩法中,我沒試過亦沒聽過 DeflOpt :oops:
所以很好奇它的強項之處是? :P

另外,請問一下為何 AdvPNG 跟 DeflOpt 要連用兩次呢? :shock:

-----------------
畫面截圖軟體,我用 Screenshot Captor (Freeware) *推薦*

發表人:  訪客 [ 2008-07-21, 22:33 ]
文章主題 : 

貼個範例:
這是用XnView抓的網頁圖,
雖然總色數高達1624色,
存成png只要137k,
存成品質90的jpeg卻要245k,
硬是把品質壓到60還是要141k,
可是一看就知道慘不忍睹!

png檔: http://img174.imageshack.us/img174/2143/45889839sn4.png

品質60的jpg檔: http://img524.imageshack.us/img524/4130/39487434jp8.jpg

發表人:  roytam1 [ 2008-07-22, 00:27 ]
文章主題 : 

goldie 寫:
roytam1 寫:
這是我家的玩法 XD
代碼:
@echo off
for %1 %%i in (*.png) do (
touch -r "%%~i" "%%~i.time"
optipng -zw32k -zc9 -zm9 -zs0,3 -f0,5 -i0 "%%~i"
advdef -z -4 "%%~i"
deflopt -b "%%~i"
pngout /y /b0 "%%~i"
advdef -z -4 "%%~i"
deflopt -b "%%~i"
touch -r "%%~i.time" "%%~i"
if exist "%%~i.time" del "%%~i.time"
)

最近看到這串文章後,我也改用了 OptiPNG + AdvPNG 依順各跑一回。 :oops:
之前是過 PNGOut,
但是,發現沒 OptiPNG 開到最大(-o7)來得小些,
所以,之後就以 OptiPNG -o7 -fix 用了好一陣子。

在你的玩法中,我沒試過亦沒聽過 DeflOpt :oops:
所以很好奇它的強項之處是? :P

另外,請問一下為何 AdvPNG 跟 DeflOpt 要連用兩次呢? :shock:

-----------------
畫面截圖軟體,我用 Screenshot Captor (Freeware) *推薦*
看清楚我不是跑advpng而是advdef啊。
我的optipng有加patch,會做2-bytes lazy matching以達到更高壓縮率,而advdef和deflopt是用作優化optipng和pngout啦。
optipng和pngout兩個各有優勢,所以advdef和deflopt也得跑兩次。

發表人:  訪客 [ 2008-07-22, 00:43 ]
文章主題 : 

有某種情況值得一提,
雖然對一般人可能不太有用。

jpeg利用縮減人眼較難察覺的資訊來達到高壓縮能力,
我們也可以自己對png搞類似的事!
最適合利用的地方在「掃描日本漫畫」。

日本漫畫大多數圖片只需要灰階,
以256灰階來說的話,
用jpeg品質設80來存,
通常會比直接存png來得小,
不過如果利用某些演算法對原圖
先進行最佳化減色到16色再存成png的話,
雖然同樣會對原圖產生破壞,
16色png對畫面破壞的程度會比jpeg小,
銳利度比jpeg高,
檔案也通常比jpeg小。

發表人:  abev66 [ 2008-07-22, 02:22 ]
文章主題 : 

Anonymous 寫:
有某種情況值得一提,
雖然對一般人可能不太有用。

jpeg利用縮減人眼較難察覺的資訊來達到高壓縮能力,
我們也可以自己對png搞類似的事!
最適合利用的地方在「掃描日本漫畫」。

日本漫畫大多數圖片只需要灰階,
以256灰階來說的話,
用jpeg品質設80來存,
通常會比直接存png來得小,
不過如果利用某些演算法對原圖
先進行最佳化減色到16色再存成png的話,
雖然同樣會對原圖產生破壞,
16色png對畫面破壞的程度會比jpeg小,
銳利度比jpeg高,
檔案也通常比jpeg小。
灰階? 那幹嘛不用 PNG 索引色? 保證比 jpg 小很多。 另一點是, jpeg 的破壞性壓縮老實說我不太苟同說它人眼很難察覺,若你說灰階圖那我就沒話說,但是全彩的圖片至少要調到 95 以上我才會覺得比較沒感覺,色彩雜一點的圖就更慘了,調到 100 恐怕也沒用。 我不太喜歡 jpeg 的品質。

發表人:  訪客 [ 2008-07-22, 03:34 ]
文章主題 : 

abev66 寫:
灰階? 那幹嘛不用 PNG 索引色? 保證比 jpg 小很多。

不知道你想說甚麼?
原圖掃出來就是256灰階,
總色數就是256,
也是存成png索引色啦,
哪有比品質80的jpeg小很多?
像下面的範例就只跟品質96的jpeg差不多大啦。
但是經過縮減成16色的png,
就跟品質72的jpeg一樣大了,
不過品質72 jpeg的瑕疵就明顯多了。
範例:
原圖256灰階png 372k:(能再壓小多少我很懷疑)
http://img131.imageshack.us/img131/9062/13096838hl8.png
品質80的jpeg 203k:
http://img124.imageshack.us/img124/5351/51004941wj0.jpg
16色png 173k:
http://img392.imageshack.us/img392/2176/1xha5.png

abev66 寫:
另一點是, jpeg 的破壞性壓縮老實說我不太苟同說它人眼很難察覺,若你說灰階圖那我就沒話說,但是全彩的圖片至少要調到 95 以上我才會覺得比較沒感覺,色彩雜一點的圖就更慘了,調到 100 恐怕也沒用。 我不太喜歡 jpeg 的品質。

我說的是jpeg壓縮方法設計的目的,
比如壓全彩圖通常一開始就先分離亮度與顏色,
然後直接砍掉一半的顏色資料了,
這就是因為眼睛對亮度比顏色敏感而想的方法;
當然人畢竟是有個體差異,
有人的眼睛還是比較利的。

發表人:  訪客 [ 2008-07-22, 04:16 ]
文章主題 : 

同樣的道理,如果用在前面的範例網頁圖上,
因為顏色數較多,所以就只縮成256索引色png。
雖然大部分都還可以,
不過明顯看到漸層都沒了,
但是檔案也小到剩54k:
http://img155.imageshack.us/img155/7936/46255890xl2.png
這大小必須要把jpeg品質調到12才辦得到:
http://img125.imageshack.us/img125/9168/62347609tc7.jpg
當然,就跟坦克壓過一樣慘!

發表人:  goldie [ 2008-07-22, 14:29 ]
文章主題 : 

roytam1 寫:
看清楚我不是跑advpng而是advdef啊。
我的optipng有加patch,會做2-bytes lazy matching以達到更高壓縮率,而advdef和deflopt是用作優化optipng和pngout啦。
optipng和pngout兩個各有優勢,所以advdef和deflopt也得跑兩次。

謝謝講解 :D 大感恩
我再自己慢慢研究看看 :wink:

----
要跑這麼多回,這下子讓我更想換電腦了 XDDDD....

發表人:  dora2002 [ 2008-07-22, 16:38 ]
文章主題 : 

Anonymous 寫:
螢幕攫取程式,優秀的自由軟體為數不少,何以推薦已收費的 FastStone Capture?


因為太好用了 XD (雖然還停留在舊版 ...)

發表人:  abev66 [ 2008-07-22, 16:48 ]
文章主題 : 

Anonymous 寫:
原來如此,我還以為你是用全彩的 PNG .... Orz (誤會
不過我覺得 PNG 的顏色數還可以再減....= ="
至少 16 色我還看不太出來瑕疵。

Anonymous 寫:
我說的是jpeg壓縮方法設計的目的,
比如壓全彩圖通常一開始就先分離亮度與顏色,
然後直接砍掉一半的顏色資料了,
這就是因為眼睛對亮度比顏色敏感而想的方法;
當然人畢竟是有個體差異,
有人的眼睛還是比較利的。
我覺得 JPEG 失真最嚴重的應該是紅色吧? 不知道是不是軟體的問題,每次用 JPEG 壓縮我都會發現紅色變得很難看,還有就是 JPEG 的壓縮原理在我的感覺裡會造成那張圖很像很老舊變質的紙張.... 囧"

也許是我太敏感吧....

發表人:  roytam1 [ 2008-07-22, 17:09 ]
文章主題 : 

abev66 寫:
Anonymous 寫:
原來如此,我還以為你是用全彩的 PNG .... Orz (誤會
不過我覺得 PNG 的顏色數還可以再減....= ="
至少 16 色我還看不太出來瑕疵。

Anonymous 寫:
我說的是jpeg壓縮方法設計的目的,
比如壓全彩圖通常一開始就先分離亮度與顏色,
然後直接砍掉一半的顏色資料了,
這就是因為眼睛對亮度比顏色敏感而想的方法;
當然人畢竟是有個體差異,
有人的眼睛還是比較利的。
我覺得 JPEG 失真最嚴重的應該是紅色吧? 不知道是不是軟體的問題,每次用 JPEG 壓縮我都會發現紅色變得很難看,還有就是 JPEG 的壓縮原理在我的感覺裡會造成那張圖很像很老舊變質的紙張.... 囧"

也許是我太敏感吧....
其實JPEG失真在DCT取值和其後的量化過程中啦…

2 頁 (共 4 頁) 所有顯示的時間為 UTC + 8 小時
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/