fbpx
维基百科

PNG

便携式网络图形(英語:Portable Network GraphicsPNG)是一种支持无损压缩位图图形格式,支持索引、灰度RGB三种颜色方案以及Alpha通道等特性。PNG的开发目标是改善并取代GIF作为适合网络传输的格式而不需专利许可,所以受广泛应用于互联网及其他方面上。

可攜式網路圖形
Portable Network Graphics

透明的8位元PNG圖片
扩展名.png
互联网媒体类型image/png
类型代码英语Type code
  • PNG
  • PNGf
统一类型标识public.png
开发者W3C
初始版本1996年10月1日,​27年前​(1996-10-01
格式类型無損壓縮
扩展为
标准
免费格式?

PNG另一个非正式的名称来源为递归缩写:“PNG is Not GIF”。PNG的官方念法是“平”(英語IPA:/pɪŋ/;「平」是以國語發音),[1]但是多数人是当成三个英文字母分开读。[2]

PNG圖片大多數都使用PNG作为扩展名,其互联网媒体类型image/png[3]PNG于1997年3月作为知识性RFC 2083发布,于2004年作为ISO/IEC标准发布。

特性 编辑

  • 支持256色调色板技术以产生小体积文件
  • 最高支持24位真彩色图像以及8位灰度图像
  • 支持Alpha通道的透明/半透明特性。
  • 支持图像亮度的Gamma校准信息。
  • 支持存储附加文本信息,以保留图像名称、作者、版权、创作时间、注释等信息。
  • 支持无损压缩。
  • 渐近显示和流式读写,适合在网络传输中快速显示预览效果后再展示全貌。
  • 使用CRC防止文件出错。
  • 最新的PNG标准允许在一个文件内存储多幅图像。

版本及历史 编辑

1995年早期,Unisys公司根据它在GIF格式中使用的LZW数据压缩算法的软件专利(美国 第4558302号(页面存档备份,存于互联网档案馆))开始商业收费。为避免专利影响,用于表现单张图像的PNG、用于表现动画的Multiple-image Network Graphics图形文件格式同时创建出来。1999年8月,Unisys公司进一步中止了对自由软件和非商用软件开发者的GIF专利免费许可,从而使PNG格式获得了更多的关注。

在PNG传播过程中,很多网络浏览器经过很长时间才开始完全支持PNG格式;如Microsoft Windows預設的Internet Explorer浏览器一直到7.0版才支持PNG格式中的半透明效果,較早期的版本(如6.0 SP1)需要下載Hotfix [4]或由網站提供額外的Script去支援。[5]这造成PNG格式并没有得到广泛的认知。

  • PNG的1.0版本规范于1996年7月1日发布,后来称为RFC 2083标准,并在1996年10月1日成为W3C建议。
  • PNG的1.1版本进行了部分小幅修改并增加了三个新的数据块定义,于1998年12月31日发布。
  • PNG的1.2版本增加了另外一个数据块,于1999年8月11日发布。
  • PNG现行版本是国际标准(ISOIEC 15948:2003),并在2003年11月10日作为W3C建议发布。这个版本与1.2版仅有细微差别。

此外也产生了基于PNG的动画格式:1996年6月提出PNF(Portable Network Frame)草案,当年8月改名为MNG(Multiple-image Network Graphics),但由于较为复杂,实现支持的软件较少。2004年末,PNG的动画扩展——APNG,受提出来。这是一个相对于MNG更简单的动画实现方案,不识别APNG格式的PNG解码器至少能够正常回放第一幅普通PNG画面,相反地得到大部分显示或编辑的软件支持。

文件结构 编辑

儲存型別 编辑

PNG圖片主要由三種型別儲存

  • PNG 8: 圖片使用8 bits來儲存,可以用2的8次方大小個種類顏色來儲存一張黑白的圖片。也就是說PNG 8能儲存256种顏色,因為顏色少,檔案體積也非常小,一張圖片如果顏色簡單,將它設定成PNG 8的圖片是非常省空間合適的。
  • PNG 24: 圖片使用24bits來儲存,用三個8bits分別去表示 R(紅)、G(綠)、B(藍)三個通道(Channel)的數值。可以表達256乘以256乘以256=16777216種顏色的圖片,色彩豐富度更高,但相對的所佔用的空間也就更大了。
  • PNG 32: 圖片使用32bits來儲存,相當於PNG 24 加上 8bits的透明顏色通道,總共有R(紅)、G(綠)、B(藍)、A(透明)四個通道。圖片能表示的色彩跟PNG 24一樣多,並且還支援256種透明度,能讓圖片色彩更加豐富。

檔案資料構成 编辑

PNG图像格式文件由一个8字节的PNG文件标识(file signature or file header)域和3个以上的后续数据块(chunk)如:IHDR、IDAT、IEND等组成。

PNG文件包括8字节文件署名(89 50 4E 47 0D 0A 1A 0A,十六进制),用来识别PNG格式,所有PNG圖片檔案內容開頭都會有這一串header。

十六进制 含义
89 用于检测传输系统是否支持8位的字符编码(8 bit data),用以减少将文本文件被错误的识别成PNG文件的机会,反之亦然。
50 4E 47 PNG每个字母对应的ASCII,让用户可以使用文本编辑器查看时,识别出是PNG文件。
0D 0A DOS风格的换行符(CRLF)。用于DOS-Unix数据的换行符转换。
1A 在DOS命令行下,用于阻止文件显示的文件结束符。
0A Unix风格的换行符(LF)。用于Unix-DOS换行符的转换。

PNG定义了两种类型的数据块:一种是PNG文件必须包含、读写软件也都必须要支持的关键块(critical chunk);另一种叫做辅助块(ancillary chunks),PNG允许软件忽略它不认识的附加块。这种基于数据块的设计,允许PNG格式在扩展时仍能保持与旧版本兼容

數據塊結構 编辑

PNG文件中,每個數據塊都由四個部分組成,如下:

名稱 字節數 說明
長度(Length) 4字節 指定數據塊中數據區域的長度,長度不可超過(231-1)個字節
數據塊類型碼(Chunk Type Code) 4字節 數據塊類型碼由ASCII字母(A-Z和a-z)組成的"數據塊符號"
數據塊數據(Chunk Data) 可變長度 儲存數據塊類型碼指定的數據
循環冗餘檢測(CRC) 4字節 儲存用來檢測是否檔案傳輸有誤的循環冗餘碼

关键数据块中有4个标准数据块:

  • 文件头数据块IHDR(header chunk):包含有图像基本信息,作为第一个数据块出现并只出现一次。
  • 调色板数据块PLTE(palette chunk):必须放在图像数据块之前。
  • 图像数据块IDAT(image data chunk):存储实际图像数据。PNG数据允许包含多个连续的图像数据块。
  • 图像结束数据IEND(image trailer chunk):放在文件尾部,表示PNG数据流结束。

其餘輔助數據塊列表:

數據塊識別符號 數據塊含意 數據塊位置限制
cHRM 基色和白色點數據塊 放在PLTE和IDAT之前
gAMA 圖像γ數據塊 放在PLTE和IDAT之前
sBIT 樣本有效位數據塊 放在PLTE和IDAT之前
bKGD 背景顏色數據塊 放在PLTE之後IDAT之前
hIST 圖像直方圖數據塊 放在PLTE之後IDAT之前
tRNS 圖像透明數據塊 放在PLTE之後IDAT之前
pHYs 物理像素尺寸數據塊 放在IDAT之前
tIME 圖像最後修改時間數據塊 無限制
tEXt 文件基本訊息數據塊 無限制
zTXt 壓縮文本數據塊 無限制
sCAL (專用公共數據塊) 放在IDAT之前
oFFs (專用公共數據塊) 放在IDAT之前
fRAc (專用公共數據塊) 無限制
gIFg (專用公共數據塊) 無限制
gIFt (專用公共數據塊) 無限制
gIFx (專用公共數據塊) 無限制

壓縮方式 编辑

PNG圖片的壓縮主要分有兩個階段:

  • 預解析(Prediction
  • 壓縮(Compression

由於壓縮方式主要由以上兩個階段構成,優化方向也對應著兩個階段。針對預解析階段做優化主要的選擇是去優化差分編碼器,讓編碼出的結果能出現盡可能多的零值或是相同的值。針對壓縮階段的優化則是找出更好的Deflate算法,以獲得更高的壓縮率。

預解析 编辑

在這階段中,圖片會做先做些預處理,以利後續壓縮。 每次會處理圖片中某一行(column)的數據,首先經過濾波器(Filter)來處理這些數據,每個像素點(Pixel)在不同通道中(Channel ex:RGB)的數值都會經過濾波器運算,然就得出的結果會交由差分處理器來重新計算通道中的數值。 差分處理器會將目前這個像素點上通道中的數值和之前或之上(EX:左邊上方)像素點做對比,根據差異進行差分編碼。若是相鄰的像素點在通道上的數值非常接近,就會得出很多1,0,-1這種很小的值。 整個prediction階段要做的事就是找到適合的差分編碼器,使得最終差分編碼的結果盡可能的都是重複很小或是零的值,這一階段的結果會影響到Compression階段中能實現的壓縮率。

壓縮 编辑

經過預解析階段之後,將編碼出的結果輸出給Deflate(是一種無損數據壓縮算法,同時使用了LZ77和Huffman Coding方法),由其執行真正的壓縮操作,在此階段會通過LZ77和Huffman Coding方法來對圖像進行編碼,最後將處理後的圖片結果保存。最終的壓縮率主要受到兩方面的影響:

  • 預解析階段(Prediction)的處理結果:對於RGB通道數值相近的像素區域,也就是編碼結果有很多零值的區域,在壓縮階段得當的壓縮率會特別高,若是相鄰區域的顏色差異大,則壓縮效果就會大打折扣。
  • Deflate 每一行的匹配情形:在整個壓縮處理過程中都是以行(column)為單位來進行處理。而在處裡數據的過程中,處裡的符號數被限制在3-258之間,換言之,最高的壓縮率可以達到1032:1,當出現的符號數小於3時,就可能會出現無法匹配的情況。因此圖片的寬度也會是一個可能影響最終壓縮效果的因素之一。

壓縮方案 编辑

PNG壓縮提供兩種壓縮方案

  • 無損壓縮(Lossless Compression):數據經過壓縮之後,信息不受損失,能夠完全還原至壓縮前的模樣,通常此種壓縮方案的壓縮率有一定的限制。
  • 有損壓縮(Lossy compression):數據經過壓縮之後,信息數據會和原始數據不同,但僅限於些微差距,通常此種壓縮方案能提供非常高的壓縮率。

無損壓縮方案 编辑

目前大部分PNG的壓縮採用基於LZ77派生算法,使得它壓縮比率更高,生成的文件體積更小,並且不損失數據。

有損壓縮方案 编辑

由於PNG原本的無損壓縮方案在壓縮率上有一定的限制,有些開源者無法接受既有的壓縮率,因此基於PNG原本的壓縮方式開發新的有損壓縮方案,在工程上與得到了一定的應用。例如 TinyPNG,根據官方公開的信息,其利用了Quantization的技術來實現提高壓縮率,通過合併相似的顏色將24位元的PNG圖片壓縮成更小的8位元圖片。其中更著名的PNG有損壓縮算法pngquant,在Github上有完整的開源代碼,同樣也是使用了Vector Quantization來減少圖片中顏色的種類,在矢量化過程中將像素點根據顏色相似程度進行分組,隨後組內的像素統計出一個中心顏色並將所有組內像素都替代為此中心顏色。矢量化會造成圖片失真,如何在壓縮率與圖片質量之間取得一個恰到好處的平衡點是個值得優化的方向。

与其他格式相比 编辑

与GIF相比 编辑

  • 一般情况下将静态GIF图像无损转换为PNG后可以压缩率会略为提高(前提是同样采用8位索引模式)。
  • PNG可提供更大颜色深度的支持,包括24位(8位3通道)和48位(16位3通道)真彩色。加入Alpha通道后可进一步支持每像素64位的表示。
  • 超过8位色深的PNG图像转换为GIF时,图像质量会由于分色(颜色数减少)而下降。
  • GIF原生支持动态图像,PNG只能通过非标准实现,在PNG的基础上另有发展出支持动画的APNGMNG格式,但目前普及度不高。

PNG在IE6等旧代浏览器上的支持较差。

与JPEG相比 编辑

JPEG可以对照片(或类似)图像生成更小的文件,这是由于JPEG采用了一种针对照片图像的特定有损编码方法,这种编码适用于低对比,图像颜色过渡平滑,雜訊多,且结构不规则的情况下。如果在这种情况下用PNG代替JPEG,文件尺寸增大很多,而图像质量的提高有限。相应的,如果保存文本,线条或类似的边缘清晰,有大块相同颜色区域的图像,PNG格式的压缩效果就要比JPEG好很多,并且不会出现JPEG那样的高对比度区域的图像失真。如果图像既有清晰边缘,又有照片图像的特点,就需要在这两种格式之间权衡一下了。JPEG不支持透明度。

由于JPEG是有损压缩,会产生迭代失真,在重复压缩和解码的过程中会不断丢失信息使图像质量下降。由于PNG是无损的,保存将要编辑的图像来说更加合适。虽然PNG压缩照片图像也有效,但有专门针对照片图像设计的无损压缩格式,例如无损JPEG2000DNG。总的来说这些格式都不能做到适用所有图像。对于将要发布的图像可以保存成JPEG,用JPEG编码一次不会造成明显的图像失真。

与JPEG-LS相比 编辑

JPEG-LS是一个“几乎”无损压缩格式,相对于上面提到的有损JPEG压缩,它的知名度不高。它可以直接和PNG相比较,使用一组标准的测试图像。在Waterloo Repertoire ColorSet(一组标准测试图像)下,JPEG-LS通常表现要比PNG好10%-15%,但其中有一些图像PNG表现明显更好一些,大约50%-75%。所以,如果这两种格式都支持而且对图像文件大小很敏感的话,可以用这两种格式都试试,和图像数据本身有比较大关系。

与TIFF相比 编辑

TIFF是一个相当多方案结合的格式。它广泛用作专业图像编辑软件之间图像交换的中间格式,因此它不断支援更多應用程式所需的功能,而对應用程式不关心的图像操作部分支援不多。这也意味着许多應用程式只能识别TIFF的一个子集,而产生更多的潜在混淆之处。

TIFF使用的最通用的无损压缩算法是LZW。这种算法--GIF中也在使用,直到2003年一直在专利保护之中。有一种TIFF变种使用与PNG相同的压缩算法,但是没有獲许多专利程序所支援。TIFF也提供了一种特殊的无损压缩算法,类似CCITT Group IV,可以对二值图像(比如传真或黑白文本)比PNG有更好的压缩效果。

PNG只支援非自左乘α,而TIFF也支援联合(自左乘)α。

PNG规范中不包含嵌入式EXIF(可交换图像文件格式)图像数据的标准,比如数码像机拍得的图像。而TIFF,JPEG 2000, DNG都支援EXIF。

早期的浏览器不支援PNG图像;JPEG和GIF是主流图像格式。由于GIF的颜色深度限制,网页中的有颜色过渡的图像都是使用JPEG。不管怎样,JPEG压缩都会导致图像的轻微模糊。而PNG可以做到在相应颜色深度下的尽可能精确,同时保持图像文件不大。PNG已经渐渐成为一种对于小的梯度图像的较好的选择,众多浏览器都已经对PNG有了很好的支援。

参考文献 编辑

  1. ^ History of PNG. Libpng.org. 29 May 2010 [2010-10-20]. (原始内容于2004-10-16). 
  2. ^ Definition of PNG noun from the Oxford Advanced Learner's Dictionary. Oxford Learner's Dictionaries. [2018-01-21]. (原始内容于2019-04-22). 
  3. ^ Registration of new Media Type image/png. IANA. 1996-07-27 [2018-01-09]. (原始内容于2017-09-15). 
  4. ^ Microsoft技術支援服務 - You cannot view some PNG images in Internet Explorer 6 (页面存档备份,存于互联网档案馆),於2009年6月1日查閱。
  5. ^ The PNG problem in Windows Internet Explorer (页面存档备份,存于互联网档案馆),於2009年6月1日查閱。

外部链接 编辑

便携式网络图形, 英語, portable, network, graphics, 是一种支持无损压缩的位图图形格式, 支持索引, 灰度, rgb三种颜色方案以及alpha通道等特性, 的开发目标是改善并取代gif作为适合网络传输的格式而不需专利许可, 所以受广泛应用于互联网及其他方面上, 可攜式網路圖形portable, network, graphics透明的8位元圖片扩展名, png互联网, 媒体类型image, png类型代码, 英语, type, code, f统一类型标识public, png开发者w3. 便携式网络图形 英語 Portable Network Graphics PNG 是一种支持无损压缩的位图图形格式 支持索引 灰度 RGB三种颜色方案以及Alpha通道等特性 PNG的开发目标是改善并取代GIF作为适合网络传输的格式而不需专利许可 所以受广泛应用于互联网及其他方面上 可攜式網路圖形Portable Network Graphics透明的8位元PNG圖片扩展名 png互联网 媒体类型image png类型代码 英语 Type code PNG PNGf统一类型标识public png开发者W3C初始版本1996年10月1日 27年前 1996 10 01 格式类型無損壓縮扩展为APNG JNG MNG标准ISO 15948 RFC 2083免费格式 是PNG另一个非正式的名称来源为递归缩写 PNG is Not GIF PNG的官方念法是 平 英語IPA p ɪ ŋ 平 是以國語發音 1 但是多数人是当成三个英文字母分开读 2 PNG圖片大多數都使用PNG作为扩展名 其互联网媒体类型为image png 3 PNG于1997年3月作为知识性RFC 2083发布 于2004年作为ISO IEC标准发布 目录 1 特性 2 版本及历史 3 文件结构 3 1 儲存型別 3 2 檔案資料構成 3 2 1 數據塊結構 4 壓縮方式 4 1 預解析 4 2 壓縮 4 3 壓縮方案 4 3 1 無損壓縮方案 4 3 2 有損壓縮方案 5 与其他格式相比 5 1 与GIF相比 5 2 与JPEG相比 5 3 与JPEG LS相比 5 4 与TIFF相比 6 参考文献 7 外部链接特性 编辑支持256色调色板技术以产生小体积文件 最高支持24位真彩色图像以及8位灰度图像 支持Alpha通道的透明 半透明特性 支持图像亮度的Gamma校准信息 支持存储附加文本信息 以保留图像名称 作者 版权 创作时间 注释等信息 支持无损压缩 渐近显示和流式读写 适合在网络传输中快速显示预览效果后再展示全貌 使用CRC防止文件出错 最新的PNG标准允许在一个文件内存储多幅图像 版本及历史 编辑1995年早期 Unisys公司根据它在GIF格式中使用的LZW数据压缩算法的软件专利 美国 第4558302号 页面存档备份 存于互联网档案馆 开始商业收费 为避免专利影响 用于表现单张图像的PNG 用于表现动画的Multiple image Network Graphics图形文件格式同时创建出来 1999年8月 Unisys公司进一步中止了对自由软件和非商用软件开发者的GIF专利免费许可 从而使PNG格式获得了更多的关注 在PNG传播过程中 很多网络浏览器经过很长时间才开始完全支持PNG格式 如Microsoft Windows預設的Internet Explorer浏览器一直到7 0版才支持PNG格式中的半透明效果 較早期的版本 如6 0 SP1 需要下載Hotfix 4 或由網站提供額外的Script去支援 5 这造成PNG格式并没有得到广泛的认知 PNG的1 0版本规范于1996年7月1日发布 后来称为RFC 2083标准 并在1996年10月1日成为W3C建议 PNG的1 1版本进行了部分小幅修改并增加了三个新的数据块定义 于1998年12月31日发布 PNG的1 2版本增加了另外一个数据块 于1999年8月11日发布 PNG现行版本是国际标准 ISO IEC 15948 2003 并在2003年11月10日作为W3C建议发布 这个版本与1 2版仅有细微差别 此外也产生了基于PNG的动画格式 1996年6月提出PNF Portable Network Frame 草案 当年8月改名为MNG Multiple image Network Graphics 但由于较为复杂 实现支持的软件较少 2004年末 PNG的动画扩展 APNG 受提出来 这是一个相对于MNG更简单的动画实现方案 不识别APNG格式的PNG解码器至少能够正常回放第一幅普通PNG画面 相反地得到大部分显示或编辑的软件支持 文件结构 编辑儲存型別 编辑 PNG圖片主要由三種型別儲存 PNG 8 圖片使用8 bits來儲存 可以用2的8次方大小個種類顏色來儲存一張黑白的圖片 也就是說PNG 8能儲存256种顏色 因為顏色少 檔案體積也非常小 一張圖片如果顏色簡單 將它設定成PNG 8的圖片是非常省空間合適的 PNG 24 圖片使用24bits來儲存 用三個8bits分別去表示 R 紅 G 綠 B 藍 三個通道 Channel 的數值 可以表達256乘以256乘以256 16777216種顏色的圖片 色彩豐富度更高 但相對的所佔用的空間也就更大了 PNG 32 圖片使用32bits來儲存 相當於PNG 24 加上 8bits的透明顏色通道 總共有R 紅 G 綠 B 藍 A 透明 四個通道 圖片能表示的色彩跟PNG 24一樣多 並且還支援256種透明度 能讓圖片色彩更加豐富 檔案資料構成 编辑 PNG图像格式文件由一个8字节的PNG文件标识 file signature or file header 域和3个以上的后续数据块 chunk 如 IHDR IDAT IEND等组成 PNG文件包括8字节文件署名 89 50 4E 47 0D 0A 1A 0A 十六进制 用来识别PNG格式 所有PNG圖片檔案內容開頭都會有這一串header 十六进制 含义89 用于检测传输系统是否支持8位的字符编码 8 bit data 用以减少将文本文件被错误的识别成PNG文件的机会 反之亦然 50 4E 47 PNG每个字母对应的ASCII 让用户可以使用文本编辑器查看时 识别出是PNG文件 0D 0A DOS风格的换行符 CRLF 用于DOS Unix数据的换行符转换 1A 在DOS命令行下 用于阻止文件显示的文件结束符 0A Unix风格的换行符 LF 用于Unix DOS换行符的转换 PNG定义了两种类型的数据块 一种是PNG文件必须包含 读写软件也都必须要支持的关键块 critical chunk 另一种叫做辅助块 ancillary chunks PNG允许软件忽略它不认识的附加块 这种基于数据块的设计 允许PNG格式在扩展时仍能保持与旧版本兼容 數據塊結構 编辑 PNG文件中 每個數據塊都由四個部分組成 如下 名稱 字節數 說明長度 Length 4字節 指定數據塊中數據區域的長度 長度不可超過 231 1 個字節數據塊類型碼 Chunk Type Code 4字節 數據塊類型碼由ASCII字母 A Z和a z 組成的 數據塊符號 數據塊數據 Chunk Data 可變長度 儲存數據塊類型碼指定的數據循環冗餘檢測 CRC 4字節 儲存用來檢測是否檔案傳輸有誤的循環冗餘碼关键数据块中有4个标准数据块 文件头数据块IHDR header chunk 包含有图像基本信息 作为第一个数据块出现并只出现一次 调色板数据块PLTE palette chunk 必须放在图像数据块之前 图像数据块IDAT image data chunk 存储实际图像数据 PNG数据允许包含多个连续的图像数据块 图像结束数据IEND image trailer chunk 放在文件尾部 表示PNG数据流结束 其餘輔助數據塊列表 數據塊識別符號 數據塊含意 數據塊位置限制cHRM 基色和白色點數據塊 放在PLTE和IDAT之前gAMA 圖像g數據塊 放在PLTE和IDAT之前sBIT 樣本有效位數據塊 放在PLTE和IDAT之前bKGD 背景顏色數據塊 放在PLTE之後IDAT之前hIST 圖像直方圖數據塊 放在PLTE之後IDAT之前tRNS 圖像透明數據塊 放在PLTE之後IDAT之前pHYs 物理像素尺寸數據塊 放在IDAT之前tIME 圖像最後修改時間數據塊 無限制tEXt 文件基本訊息數據塊 無限制zTXt 壓縮文本數據塊 無限制sCAL 專用公共數據塊 放在IDAT之前oFFs 專用公共數據塊 放在IDAT之前fRAc 專用公共數據塊 無限制gIFg 專用公共數據塊 無限制gIFt 專用公共數據塊 無限制gIFx 專用公共數據塊 無限制壓縮方式 编辑PNG圖片的壓縮主要分有兩個階段 預解析 Prediction 壓縮 Compression 由於壓縮方式主要由以上兩個階段構成 優化方向也對應著兩個階段 針對預解析階段做優化主要的選擇是去優化差分編碼器 讓編碼出的結果能出現盡可能多的零值或是相同的值 針對壓縮階段的優化則是找出更好的Deflate算法 以獲得更高的壓縮率 預解析 编辑 在這階段中 圖片會做先做些預處理 以利後續壓縮 每次會處理圖片中某一行 column 的數據 首先經過濾波器 Filter 來處理這些數據 每個像素點 Pixel 在不同通道中 Channel ex RGB 的數值都會經過濾波器運算 然就得出的結果會交由差分處理器來重新計算通道中的數值 差分處理器會將目前這個像素點上通道中的數值和之前或之上 EX 左邊上方 像素點做對比 根據差異進行差分編碼 若是相鄰的像素點在通道上的數值非常接近 就會得出很多1 0 1這種很小的值 整個prediction階段要做的事就是找到適合的差分編碼器 使得最終差分編碼的結果盡可能的都是重複很小或是零的值 這一階段的結果會影響到Compression階段中能實現的壓縮率 壓縮 编辑 經過預解析階段之後 將編碼出的結果輸出給Deflate 是一種無損數據壓縮算法 同時使用了LZ77和Huffman Coding方法 由其執行真正的壓縮操作 在此階段會通過LZ77和Huffman Coding方法來對圖像進行編碼 最後將處理後的圖片結果保存 最終的壓縮率主要受到兩方面的影響 預解析階段 Prediction 的處理結果 對於RGB通道數值相近的像素區域 也就是編碼結果有很多零值的區域 在壓縮階段得當的壓縮率會特別高 若是相鄰區域的顏色差異大 則壓縮效果就會大打折扣 Deflate 每一行的匹配情形 在整個壓縮處理過程中都是以行 column 為單位來進行處理 而在處裡數據的過程中 處裡的符號數被限制在3 258之間 換言之 最高的壓縮率可以達到1032 1 當出現的符號數小於3時 就可能會出現無法匹配的情況 因此圖片的寬度也會是一個可能影響最終壓縮效果的因素之一 壓縮方案 编辑 PNG壓縮提供兩種壓縮方案 無損壓縮 Lossless Compression 數據經過壓縮之後 信息不受損失 能夠完全還原至壓縮前的模樣 通常此種壓縮方案的壓縮率有一定的限制 有損壓縮 Lossy compression 數據經過壓縮之後 信息數據會和原始數據不同 但僅限於些微差距 通常此種壓縮方案能提供非常高的壓縮率 無損壓縮方案 编辑 目前大部分PNG的壓縮採用基於LZ77派生算法 使得它壓縮比率更高 生成的文件體積更小 並且不損失數據 有損壓縮方案 编辑 由於PNG原本的無損壓縮方案在壓縮率上有一定的限制 有些開源者無法接受既有的壓縮率 因此基於PNG原本的壓縮方式開發新的有損壓縮方案 在工程上與得到了一定的應用 例如 TinyPNG 根據官方公開的信息 其利用了Quantization的技術來實現提高壓縮率 通過合併相似的顏色將24位元的PNG圖片壓縮成更小的8位元圖片 其中更著名的PNG有損壓縮算法pngquant 在Github上有完整的開源代碼 同樣也是使用了Vector Quantization來減少圖片中顏色的種類 在矢量化過程中將像素點根據顏色相似程度進行分組 隨後組內的像素統計出一個中心顏色並將所有組內像素都替代為此中心顏色 矢量化會造成圖片失真 如何在壓縮率與圖片質量之間取得一個恰到好處的平衡點是個值得優化的方向 与其他格式相比 编辑与GIF相比 编辑 一般情况下将静态GIF图像无损转换为PNG后可以压缩率会略为提高 前提是同样采用8位索引模式 PNG可提供更大颜色深度的支持 包括24位 8位3通道 和48位 16位3通道 真彩色 加入Alpha通道后可进一步支持每像素64位的表示 超过8位色深的PNG图像转换为GIF时 图像质量会由于分色 颜色数减少 而下降 GIF原生支持动态图像 PNG只能通过非标准实现 在PNG的基础上另有发展出支持动画的APNG和MNG格式 但目前普及度不高 PNG在IE6等旧代浏览器上的支持较差 与JPEG相比 编辑 JPEG可以对照片 或类似 图像生成更小的文件 这是由于JPEG采用了一种针对照片图像的特定有损编码方法 这种编码适用于低对比 图像颜色过渡平滑 雜訊多 且结构不规则的情况下 如果在这种情况下用PNG代替JPEG 文件尺寸增大很多 而图像质量的提高有限 相应的 如果保存文本 线条或类似的边缘清晰 有大块相同颜色区域的图像 PNG格式的压缩效果就要比JPEG好很多 并且不会出现JPEG那样的高对比度区域的图像失真 如果图像既有清晰边缘 又有照片图像的特点 就需要在这两种格式之间权衡一下了 JPEG不支持透明度 由于JPEG是有损压缩 会产生迭代失真 在重复压缩和解码的过程中会不断丢失信息使图像质量下降 由于PNG是无损的 保存将要编辑的图像来说更加合适 虽然PNG压缩照片图像也有效 但有专门针对照片图像设计的无损压缩格式 例如无损JPEG2000和DNG 总的来说这些格式都不能做到适用所有图像 对于将要发布的图像可以保存成JPEG 用JPEG编码一次不会造成明显的图像失真 与JPEG LS相比 编辑 JPEG LS 是一个 几乎 无损压缩格式 相对于上面提到的有损JPEG压缩 它的知名度不高 它可以直接和PNG相比较 使用一组标准的测试图像 在Waterloo Repertoire ColorSet 一组标准测试图像 下 JPEG LS通常表现要比PNG好10 15 但其中有一些图像PNG表现明显更好一些 大约50 75 所以 如果这两种格式都支持而且对图像文件大小很敏感的话 可以用这两种格式都试试 和图像数据本身有比较大关系 与TIFF相比 编辑 TIFF是一个相当多方案结合的格式 它广泛用作专业图像编辑软件之间图像交换的中间格式 因此它不断支援更多應用程式所需的功能 而对應用程式不关心的图像操作部分支援不多 这也意味着许多應用程式只能识别TIFF的一个子集 而产生更多的潜在混淆之处 TIFF使用的最通用的无损压缩算法是LZW 这种算法 GIF中也在使用 直到2003年一直在专利保护之中 有一种TIFF变种使用与PNG相同的压缩算法 但是没有獲许多专利程序所支援 TIFF也提供了一种特殊的无损压缩算法 类似CCITT Group IV 可以对二值图像 比如传真或黑白文本 比PNG有更好的压缩效果 PNG只支援非自左乘a 而TIFF也支援联合 自左乘 a PNG规范中不包含嵌入式EXIF 可交换图像文件格式 图像数据的标准 比如数码像机拍得的图像 而TIFF JPEG 2000 DNG都支援EXIF 早期的浏览器不支援PNG图像 JPEG和GIF是主流图像格式 由于GIF的颜色深度限制 网页中的有颜色过渡的图像都是使用JPEG 不管怎样 JPEG压缩都会导致图像的轻微模糊 而PNG可以做到在相应颜色深度下的尽可能精确 同时保持图像文件不大 PNG已经渐渐成为一种对于小的梯度图像的较好的选择 众多浏览器都已经对PNG有了很好的支援 参考文献 编辑 History of PNG Libpng org 29 May 2010 2010 10 20 原始内容存档于2004 10 16 Definition of PNG noun from the Oxford Advanced Learner s Dictionary Oxford Learner s Dictionaries 2018 01 21 原始内容存档于2019 04 22 Registration of new Media Type image png IANA 1996 07 27 2018 01 09 原始内容存档于2017 09 15 Microsoft技術支援服務 You cannot view some PNG images in Internet Explorer 6 页面存档备份 存于互联网档案馆 於2009年6月1日查閱 The PNG problem in Windows Internet Explorer 页面存档备份 存于互联网档案馆 於2009年6月1日查閱 外部链接 编辑PNG文件格式 页面存档备份 存于互联网档案馆 PNG规范第二版 页面存档备份 存于互联网档案馆 英文 2003年11月10日W3C建议 PNG官方站 页面存档备份 存于互联网档案馆 英文 PNG的故事 页面存档备份 存于互联网档案馆 英文 取自 https zh wikipedia org w index php title PNG amp oldid 77063037, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。