減色PNG linux版

距離上一個windows only版也快一年了,linux only 的當然也要來一下

這次主要是把上次的遺珠之憾(pngnq)放進來
pngnq 1.0 這版把Improved pngnq 改良的source放進來了
整個dithered後 感覺變好很多

更多

用滑鼠拖拉自動減色png-灰階

相信很多人都知道png這個格式,也許還有些人看過如何最佳化png檔案
不過大概很少人會熟悉如何使用吧 (這類程式多是命令行,參數總是很難記住的)
png最佳化最主要就是考慮到檔案大小,很多情形是沒有必要用到24bit的彩色png
而這篇就是要教如何
在沒有必要用到24bit的彩色png下,如何用減色的方法進行失真壓縮把檔案縮到最小
(當然要把24bit的彩色png壓到最小本篇也會有介紹啦!)

此篇的內容及檔案皆為Windows only
下面看起來落落長,其實操作很簡單

首先下載檔案png.7z再說
把壓縮檔內的png資料夾解壓縮後放在c:,然後就像下圖那樣使用(看不到的部份請另開分頁)

把要最佳化的png用滑鼠拖到批次檔的圖示上面,就會自動開始進行減色最佳化
只有拖拉的方式才能正常執行 (不要複製到C:png 資料夾內 執行批次檔)  ,轉好的檔案都會出現在C:png裡面

首先介紹一下各批次檔適用的對象
檔名後面有9的只有拖拉中的前9個檔案才能被最佳化
檔名後面是all 的只有拖拉檔案所在資料夾內所有檔案都會被最佳化
會有 9跟all 不同批次檔的區別是因為最佳化有很多種組合方式
*9.bat可以看哪種組合最好可以弄出最小的檔案,然後把它的設定套用在*all.bat上面
這樣就可以用最快的速度做出最小的檔案

檔名有gray指的是這個批次檔最佳化的設定是產生出灰階png
檔名有color指的是這個批次檔最佳化的設定最多只能產生256色的png
(24bitcolor.bat例外)

首先介紹灰階,灰階有0bit 2bit 4bit 8bit…這麼多種,把它換成一般人可以理解的敘述就是
灰階有這幾種,黑到白2種顏色、黑到白4種顏色 、黑到白16種顏色、黑到白256種顏色…

譬如要轉成4bit灰階png ,gray9.bat裡面的內容就是這樣,再把png檔案拖到批次檔圖示上就可以了

cd c:png
if exist .*.png del .*.png
for %%i in (“%~dpf1″ “%~dpf2″ “%~dpf3″ “%~dpf4″ “%~dpf5″ “%~dpf6″ “%~dpf7″ “%~dpf8″ “%~dpf9″) do (
pngcrush -c 0 -m 4 -d temp %%i
)
move .temp*.png .
pngcrush -bit_depth 4 -m 4 -d temp .*.png
del .*.png
move .temp*.png .
optipng -i0 -zc9 -zm9 -zs0-3 -zw32k -f0-5 .*.png
advdef -z4 .*.png
pause

轉成8bit灰階png,gray9.bat裡面的內容就是這樣,然後把png檔案拖到批次檔圖示上就可以

cd c:png
if exist .*.png del .*.png
for %%i in (“%~dpf1″ “%~dpf2″ “%~dpf3″ “%~dpf4″ “%~dpf5″ “%~dpf6″ “%~dpf7″ “%~dpf8″ “%~dpf9″) do (
pngcrush -c 0 -m 4 -d temp %%i
)
move .temp*.png .
pngcrush -bit_depth 8 -m 4 -d temp .*.png
del .*.png
move .temp*.png .
optipng -i0 -zc9 -zm9 -zs0-3 -zw32k -f0-5 .*.png
advdef -z4 .*.png
pause

應該很容易分別吧,藍色藍色綠色綠色 要改的地方只有一個

如何把gray9.bat的參數套用在grayall.bat上面,一次轉所有跟拖拉檔案同資料夾的png呢?
每次用拖拉的方式執行gray9.bat到最後暫停時會出現類似下面這張圖的情形(點擊看圖)

紅色圈起來的部份是 zc=9,zm=9,zs=3,f=5,然後就到grayall.bat裡面修改相關數值
一樣同樣的顏色對應同樣的設定

cd c:png
if exist .*.png del .*.png
for %%i in (“%~dp1*.png") do (
pngcrush -c 0 -m 4 -d temp “%%i"
)
move .temp*.png .
pngcrush -bit_depth 4 -m 4 -d temp .*.png
del .*.png
move .temp*.png .
optipng -i0 -zc9 -zm9 -zs3 -f5 -zw32k .*.png
advdef -z4 .*.png

如果拖拉的檔案出來的結果不是同樣的設定,那就以最多的為準 改完設定儲存後
把資料夾中其中一個png檔拖拉到grayall.bat圖示上就可以自動執行同資料夾png轉換減色