12 01 2011

Png优化工具小结

bigCat Posted in NoteBook - for Comments = 6

原文 https://docs.google.com/View?id=ddx2r3c8_667vk3x7rf6\r\n作者 佩玉\r\n\r\nPng优化工具小结\r\n\r\n(考虑到结论可能是大部分人最关心的内容因此这样我先把结论分享出来)\r\n\r\n经过一段时间的测试比较以及查阅相关文档,对此问题我的结论如下:\r\n\r\n建议采用PngOptimizer工具进行优化。\r\n\r\n理由如下:\r\n\r\n1.\r\n\r\n较高的压缩比,是三种优化工具中优化效果最明显的;\r\n2.\r\n\r\n可视化的操作环境,只要鼠标拖动即可完成优化,其他两种是命令行工具。\r\n3.\r\n\r\n可以将其他格式的图片快速转换为png格式,并且同时完成优化。\r\n\r\n下面我们来分析PngOptimizer的优化体积最小原因:\r\n\r\n通过查阅相关文档了解到png格式的规范\r\n\r\n“文件结构\r\nPNG图像格式文件(或者称为数据流)由一个8字节的PNG文件署名(PNG file signature)域和按照特定结构组织的3个以上的数据块(chunk)组成。\r\n\r\nPNG定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是标准的数据块,另一种叫做辅助数据块(ancillary chunks),这是可选的数据块。关键数据块定义了4个标准数据块,每个PNG文件都必须包含它们,PNG读写软件也都必须要支持这些数据块。虽然 PNG文件规范没有要求PNG编译码器对可选数据块进行编码和译码,但规范提倡支持可选数据块。”\r\n\r\n“数据块结构\r\n1. 关键数据块\r\n\r\n关键数据块中的4个标准数据块是:\r\n\r\n(1) 文件头数据块IHDR(header chunk):它包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。\r\n(2) 调色板数据块PLTE(palette chunk):它包含有与索引彩色图像((indexed-color image))相关的彩色变换数据,它仅与索引彩色图像有关,而且要放在图像数据块(image data chunk)之前。真彩色的PNG数据流也可以有调色板数据块,目的是便于非真彩色显示程序用它来量化图像数据,从而显示该图像。调色板数据块结构如表3 所示。\r\n(3) 图像数据块IDAT(image data chunk):它存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。\r\n(4) 图像结束数据IEND(image trailer chunk):它用来标记PNG文件或者数据流已经结束,并且必须要放在文件的尾部。\r\n\r\n2. 辅助数据块\r\nPNG文件格式规范制定的10个辅助数据块是:\r\n(1) 背景颜色数据块bKGD(background color)。\r\n(2) 基色和白色度数据块cHRM(primary chromaticities and white point)。所谓白色度是指当R=G=B=最大值时在显示器上产生的白色度。\r\n(3) 图像γ数据块gAMA(image gamma)。\r\n(4) 图像直方图数据块hIST(image histogram)。\r\n(5) 物理像素尺寸数据块pHYs(physical pixel dimensions)。\r\n(6) 样本有效位数据块sBIT(significant bits)。\r\n(7) 文本信息数据块tEXt(textual data)。\r\n(8) 图像最后修改时间数据块tIME (image last-modification time)。\r\n(9) 图像透明数据块tRNS (transparency)。\r\n(10) 压缩文本数据块zTXt (compressed textual data)。”\r\n\r\n---以上内容载自http://baike.baidu.com/view/191394.htm有部分删减。\r\n\r\n由此我们可以推断出,压缩效率最高的png优化软件应该清除所有的辅助数据块,因为这些信息对显示不是必须的,即清除这些数据块,不会影响图片的正常显示。\r\n\r\n后来查阅相关算法发现png IDAT块压缩算法一般为LZ77滑动窗口算法,即可根据具体的情况可以选择相应的参数进行配置,从而满足自己的需要。譬如最快的压缩配置(主要手机上使用,对cpu要求比较底),最大压缩比的配置(主要对网络传输敏感的需求,这个也是我们需要的)等等\r\n\r\n下面针对每个软件情况进行分析:\r\n\r\npngcrush (http://pmt.sourceforge.net/pngcrush/)\r\n\r\nIts main purpose is to reduce the size of the PNG IDAT datastream by trying various compression levels an PNG filter methods. It also can be used to remove unwanted ancillary chunks, or to add certain chunks including gAMA, tRNS, iCCP, and textual chunks.\r\n\r\n下面是使用截图:\r\n\r\n\r\n\r\n源文件1.59k,优化后1.38k\r\n\r\n使用- brute参数效果如下:\r\n\r\n\r\n\r\n遍历126种配置组合,最后结果亦为\r\n\r\n源文件1.59k,优化后1.38k\r\n\r\nOptiPNG: Advanced PNG Optimizer(http://optipng.sourceforge.net/)\r\n\r\nOptiPNG is a PNG optimizer that recompresses image files to a smaller size, without losing any information. This program also converts external formats (BMP, GIF, PNM and TIFF) to optimized PNG, and performs PNG integrity checks and corrections.\r\n\r\nThe idea has been inspired from pngcrush (http://pmt.sourceforge.net/pngcrush), and is explained in detail in the PNG-Tech article "A guide to PNG optimization". The implementation is carried forward in OptiPNG, which offers a faster execution per trial, and a wider search space.\r\n\r\n从红色标注内容我们可以发现OptiPNG没有清除辅助信息,但是可以可以遍历各种压缩参数的组合(最高达1080次)来寻找最高压缩比\r\n\r\n下面是使用截图:\r\n\r\n\r\n\r\n源文件1.59k,优化后1.36k\r\n\r\nPngOptimizer (http://psydk.org/PngOptimizer)\r\n\r\n* Clean your PNG files of useless or wrong information.\r\n\r\n* Make your PNG files smaller.\r\n\r\n* Convert into PNG other lossless image formats (BMP, GIF, TGA).\r\n\r\n* Create PNG screenshots and make them easily available.\r\n\r\n* Perform all those tasks in the simpliest and most productive way.\r\n\r\n从红色标注内容我们可以发现PngOptimizer自动清除辅助信息。\r\n\r\n使用截图:\r\n\r\n\r\n\r\n源文件1.59k,优化后1.32k。比OptiPNG减少的原因应该是清除了辅助信息块。\r\n\r\n由此从可用性,优化效果方面来考虑,我们推荐使用PngOptimizer来对png图片进行优化\r\n\r\nPhotoshop使用时的优化\r\n\r\n\r\npng-8与png-24的选择很大程度取决于图片颜色的丰富程度,尽可能的采用png-8。优化的重点在选择“是否交错显示”,一般情况下不交错显示的体积会比交错显示的小10%以上。(这个是多个图片测试后的结论)\r\n\r\n交错“就是指浏览器下载它的时候隔行下载,这样下载一张图只用一半的时间就可以看到它的样子,只不过只是隔行的图,然后它再下载另一半,这样可以减少你等待看它的时间.”\r\n\r\n---http://zhidao.baidu.com/question/5269019.html\r\n\r\n因为我们png主要用来显示inco,一些图标等等,所以此功能一般不需要使用。不过PngOptimizer在优化png时,会自动将交错显示转换为不交错显示,从而减少文件体积。譬如上图photoShop生成交错png为2.26k,优化后亦为1.32k。\r\n\r\n编辑此页面(如果您有权限) |\r\nGoogle 文档 - 网络文字处理、演示文稿和电子表格。

  1. unicac says:

    其实,如果你用fireworks,导出的PNG图,默认是最优化的,用PngOptimizer试试就知道~

  2. [...] 然后搜索了下关于png以及其他图片格式的信息,以备留用 1.gif和几种png 2.png优化 3.IE6下PNG支持的解决方案 话说最近要了解的东西真多。 Pages: 蛋疼 ← [...]

  3. It helps you burn fats quicker - all of the recipes contain substances that increase your metabolic fee. https://www.facebook.com/MetabolicCookingTips

Host: (miao) | Word: Press | Code: HTML5