PNG圖像的壓縮算法

PNG圖像的壓縮算法

ID:40489712

大?。?6.64 KB

頁數(shù):5頁

時間:2019-08-03

PNG圖像的壓縮算法_第1頁
PNG圖像的壓縮算法_第2頁
PNG圖像的壓縮算法_第3頁
PNG圖像的壓縮算法_第4頁
PNG圖像的壓縮算法_第5頁
資源描述:

《PNG圖像的壓縮算法》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、PNG圖像格式的壓縮算法便攜式網(wǎng)絡(luò)圖形(PortableNetworkGraphics)簡稱為PNG,它是一種無損壓縮的位圖圖形格式,其含有以下幾種特性:1、支持256色調(diào)色板技術(shù)以產(chǎn)生小體積文件2、支持最高48位真彩色圖像以及16位灰度圖像3、支持阿爾法通道(AlphaChannel,表示圖片的透明度和半透明度)的透明/半透明性4、支持圖像亮度的伽馬校正(Gamma校準,用來針對影片或是影像系統(tǒng)里對于光線的輝度(luminance)或是三色刺激值(tristimulusvalues)所進行非線性的運算或反運算)信息5、使用了無損壓縮的算法6、使用了循環(huán)冗余校驗(CRC,用來

2、檢測或校驗數(shù)據(jù)傳輸或者保存后可能出現(xiàn)的錯誤)防止文件出錯一、PNG格式的文件結(jié)構(gòu)PNG定義了兩種類型的數(shù)據(jù)塊:一種是PNG文件必須包含、讀寫軟件也都必須要支持的關(guān)鍵塊(criticalchunk);另一種叫做輔助塊(ancillarychunks),PNG允許軟件忽略它不認識的附加塊。這種基于數(shù)據(jù)塊的設(shè)計,允許PNG格式在擴展時仍能保持與舊版本兼容。關(guān)鍵數(shù)據(jù)塊中有4個標準數(shù)據(jù)塊:1、文件頭數(shù)據(jù)塊IHDR(headerchunk):包含有圖像基本信息,作為第一個數(shù)據(jù)塊出現(xiàn)并只出現(xiàn)一次。2、調(diào)色板數(shù)據(jù)塊PLTE(palettechunk):必須放在圖像數(shù)據(jù)塊之前。3、圖像數(shù)據(jù)塊I

3、DAT(imagedatachunk):存儲實際圖像數(shù)據(jù)。PNG數(shù)據(jù)允許包含多個連續(xù)的圖像數(shù)據(jù)塊。4、圖像結(jié)束數(shù)據(jù)IEND(imagetrailerchunk):放在文件尾部,表示PNG數(shù)據(jù)流結(jié)束二、PNG格式文件的壓縮算法PNG格式文件采用的是從LZ77派生的一個稱為DEFLATE的非專利無失真式壓縮算法,這個算法對圖像里的直線進行預(yù)測然后存儲顏色差值,這使得PNG經(jīng)常能獲得比原始圖像更大的壓縮率。PNG算法的壓縮過程一般有以下幾個步驟:1、圖像信息由數(shù)據(jù)過濾器(deltafiltering)進行處理,deltafiltering是一個無損的數(shù)據(jù)過濾算法,它不會改變圖像信息

4、的大小,但是會讓圖像信息具有更高的可壓縮性。2、被處理過的數(shù)據(jù)將會用Ziv-Lempel(LZ77)算法進行處理,處理后的數(shù)據(jù)被Huffman算法壓縮,得到最后的PNG格式的圖像數(shù)據(jù),過程可用下圖表示。(1)LZ77壓縮算法原理為了更好地說明LZ77算法的原理,首先介紹算法中用到的幾個術(shù)語:1.輸入數(shù)據(jù)流(inputstream):要被壓縮的字符序列。2.字符(character):輸入數(shù)據(jù)流中的基本單元。3.編碼位置(codingposition):輸入數(shù)據(jù)流中當(dāng)前要編碼的字符位置,指前向緩沖存儲器中的開始字符。4.前向緩沖存儲器(Lookaheadbuffer):存放從編

5、碼位置到輸入數(shù)據(jù)流結(jié)束的字符序列的存儲器。5.窗口(window):指包含W個字符的窗口,字符是從編碼位置開始向后數(shù)也就是最后處理的字符數(shù)。6.指針(pointer):指向窗口中的匹配串且含長度的指針。LZ77編碼算法的核心是查找從前向緩沖存儲器開始的最長的匹配串。編碼算法的具體執(zhí)行步驟如下:1.把編碼位置設(shè)置到輸入數(shù)據(jù)流的開始位置。2.查找窗口中最長的匹配串。3.以“(Pointer,Length)Characters”的格式輸出,其中Pointer是指向窗口中匹配串的指針,Length表示匹配字符的長度,Characters是前向緩沖存儲器中的不匹配的第1個字符。4.如果

6、前向緩沖存儲器不是空的,則把編碼位置和窗口向前移(Length+1)個字符,然后返回到步驟2(2)使用LZ77算法進行壓縮如果當(dāng)前處理開始字節(jié)的串在窗口中有匹配串,就先輸出一個標志位,表明下面是一個(之間的距離,匹配長度)對,然后輸出(之間的距離,匹配長度)對,再從剛才處理完的串之后的下一個字節(jié)繼續(xù)處理。如果當(dāng)前處理字節(jié)開始的串在窗口中沒有匹配串,就先輸出一個標志位,表明下面是一個沒有改動的字節(jié),然后不做改動的輸出當(dāng)前處理字節(jié),再繼續(xù)處理下一個字節(jié)。偽代碼如下:·壓縮一段字節(jié)流,src-源數(shù)據(jù)區(qū),srclen-源數(shù)據(jù)區(qū)字節(jié)長度,dest-壓縮數(shù)據(jù)區(qū),返回值>0壓縮數(shù)據(jù)長度,返

7、回值=0數(shù)據(jù)無法壓縮,返回值<0壓縮中異常錯誤intCCompressLZ77::Compress(BYTE*src,intsrclen,BYTE*dest){CurByte<-0CurBit<-0pWnd<-src;_InitSortTable()·初始化索引表,釋放上次壓縮用的空間fori<-0tosrclendoifCurByte>=srclenreturn0;doif_SeekPhase(src,srclen,i,&off,&len)·_SeekPhase(BYTE*src,intsrclen,

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。