png的那点事儿
有人跟我扯png,我來點專業(yè)的,真正意義的png標準如下:
PNG8? 8并不是2^8=256色,而是有一個調色板(顏色表),顏色用索引來描述,參見:http://www.w3.org/TR/PNG/#4Concepts.Implied-alpha
PNG24 24是指每一像素用24位二進制數來描述RGB,8位Red+8位Green+8位Blue.
PNG32 32是指每一像素用32位二進制數來描述RGBA,8位Red+8位Green+8位Blue+8位Alpha
再談談透明的概念
布爾透明(索引透明):全透明和不透明二種
Alpha透明:256階透明
正是因為有很多軟件才給會給您帶來誤解,讓我們來看看(不好意思借了彈彈堂的圖)
Photoshop
png8 只支持布爾透明,有調色版,73.5k
png24 可以選擇透明(實際是標準png32)279k; 不透明(實際是標準png24),231k
Fireworks
png8 支持索引透明和Alpha透明,二個顏色表(調色板)有很大的區(qū)別,文件體積差別不大都只有66k左右
png24 同標準,沒有調色板,文件很大234k。不支持透明度!
如果保存為jpg格式,100品質,文件為155k,60的品質,文件大小為34k!
png32 同標準,沒有調色板,文件和png24差不多的,支持透明
Flash
1.如果把fireworks png8 alpha透明的圖導入到flash,輸出為swf,大小為46.1k
2.如果把fireworks png32透明的圖導入到flash,輸出為swf,大小為40.6k
3.如果把fireworks jpg 品質60 不帶透明的圖導入到flash,輸出為swf,大小為33.4k
? 不同的格式圖,不同位圖屬性壓縮條件
??? a.? jpg,在swf中tag為:
選照片(jpeg) 有損非透明???? DefineBitsJpeg2=? imgData (壓縮方式就是jpg標準的壓縮方式,http://www.w3.org/Graphics/JPEG/)
選無損(png)?? 無損非透明??? DefineBitsLossless???
??? b. 透明的png,在swf中tag為:
選照片(jpeg) 有損透明?????? DefineBitsJpeg3?????? = imgData(jpg壓縮) + alphaData(zlib壓縮 totalsize = w*h)?
選無損(png) 無損透明?????? DefineBitsLossless2? = colorTable(8 bit RGB /32 bit ARGB) + zibImgdata
c.非透明的png ,在swf中tag為:
?????????????? 選照片(jpeg) 有損非透明 DefineBits? = jpegData ,整個swf只有一個 jpegTables = jpegData ,多個DefineBits 可共享使用jpegTables,所以比DefineBitsJpeg2小
?????????????? 選無損(png)? 無損非透明???? DefineBitsLossless??? = colorTable(8 bit RGB /15 bit RGB/24 bit RGB) + zibImgdata
???? d.最有一個特別的 ,DefineBitsJpeg4 同? DefineBitsJpeg3 ,多了 deblocking filter,具體的可參見flash.system.JPEGLoaderContext(Flash player 10)
????? 可以看出1和2圖片本身大小差的很多,在輸出為swf后文件差異不大,是因為swf本身采用和png8類似結構存圖,把顏色和alpha分開存,顏色支持更豐富。3圖片和輸出swf后差別非常小,因為swf本身就按jpg標準存的。
????? 有些軟件號稱能再次壓縮swf中圖,實際就是把imgData中jpg的一些編輯,版權等摘要信息刪除
總結:
1.如果基于html用圖,不導入flash,對顏色要求不高,需要透明,可用考慮用png8的aplha透明導出,注意png是無損壓縮的
3.如果基于flash應用,需要透明,直接用png 32.
4. 如果基于flash應用不想用png,又需要透明,可以考慮用下面方式存,左邊彩色的存為jpg(34k),右邊黑白的存png8(僅4k),用代碼方式計算出透明。文件體積也會小不少。jpg是有損壓縮的,不支持透明度. png是無損的.同等條件jpg比png小的多
轉載于:https://www.cnblogs.com/sdk3108/archive/2011/09/28/2193915.html
總結
- 上一篇: HTML5学习教程
- 下一篇: android开发基础_列表视图一(Li