一個可以進行有損圖片壓縮的命令行工具和代碼庫。
1.為什么選擇pngquant
2.為什么選擇pngquant

3.PNG是什么——特點
網絡通訊中因受帶寬制約,在保證圖片清晰、逼真的前提下,網頁中不可能大范圍的使用文件較大的bmp、jpg格式文件。
PNG文件采用LZ77算法的派生算法進行壓縮,其結果是獲得高的壓縮比,不損失數據。它利用特殊的編碼方法標記重復出現的數據,因而對圖像的顏色沒有影響,也不可能產生顏色的損失,這樣就可以重復保存而不降低圖像質量。
PNG-8格式與GIF圖像類似,同樣采用8位調色板將RGB彩色圖像轉換為索引彩色圖像。圖像中保存的不再是各個像素的彩色信息,而是從圖像中挑選出來的具有代表性的顏色編號,每一編號對應一種顏色,圖像的數據量也因此減少,這對彩色圖像的傳播非常有利。
PNG圖像在瀏覽器上采用流式瀏覽,即使經過交錯處理的圖像會在完全下載之前提供瀏覽者一個基本的圖像內容,然后再逐漸清晰起來。它允許連續讀出和寫入圖像數據,這個特性很適合於在通信過程中顯示和生成圖像。
PNG可以為原圖像定義256個透明層次,使得彩色圖像的邊緣能與任何背景平滑地融合,從而徹底地消除鋸齒邊緣。這種功能是GIF和JPEG沒有的。PNG同時還支持真彩和灰度級圖像的Alpha通道透明度。
4.PNG是什么——文件結構
8字節的PNG文件署名域用來識別該文件是不是PNG文件。該域的值是:
十進制數137 80 78 71 13 10 26 10
十六進制數 89 50 4e 47 0d 0a 1a 0a

5.PNG是什么——數據塊
因此,調色板的長度應該是3的倍數,否則,這將是一個非法的調色板。對於索引圖像,調色板信息是必須的,調色板的顏色索引從0開始編號,然后是1、2……,調色板的顏色數不能超過色深中規定的顏色數(如圖像色深為4的時候,調色板中的顏色數不可以超過2^4=16),否則,這將導致PNG圖像不合法。真彩色圖像和帶α通道數據的真彩色圖像也可以有調色板數據塊,目的是便於非真彩色顯示程序用它來量化圖像數據,從而顯示該圖像。
圖像數據塊IDAT(image data chunk):它存儲實際的數據,在數據流中可包含多個連續順序的圖像數據塊。IDAT存放着圖像真正的數據信息,因此,如果能夠了解IDAT的結構,我們就可以很方便的生成PNG圖像。
文件頭數據塊IHDR(header chunk):它包含有PNG文件中存儲的圖像數據的基本信息,並要作為第一個數據塊出現在PNG數據流中,而且一個PNG數據流中只能有一個文件頭數據塊。
圖像結束數據IEND(image trailer chunk):它用來標記PNG文件或者數據流已經結束,並且必須要放在文件的尾部。如果我們仔細觀察PNG文件,我們會發現,文件的結尾12個字符看起來總應該是這樣的:00 00 00 00 49 45 4E 44 AE 42 60 82

6.參數分析
用法: pngquant [options] [ncolors] --pngfile
7.示例代碼
