PNG:权威指南

作者:Michael J. Hammel
PNG: The Definitive Guide
  • 作者:Greg Roelofs

  • 出版社:O'Reilly & Associates

  • 电子邮件:info@ora.com

  • 网址:http://www.ora.com/

  • 价格:$26.36

  • ISBN:1565925424

  • 评论者:Michael J. Hammel

作为一个以在许多方面都做得不错但没有一项特别出色而自豪的作家,对于任何自称为“权威”的东西,我通常采取一种有点胆怯的态度。 认为自己是这样的专家需要多大的勇气! 然而,有时候,正确的人,在正确的时间,凭借正确的才能,创作出了一部真正值得“权威指南”称号的作品。 这就是其中之一。

PNG—权威指南是 Greg Roelofs 对 PNG 的设计和用途的描述。 PNG 是栅格图像文件格式的规范。 Greg 的著作由 O'Reilly 出版,是对该主题的清晰而透彻的探索。 从设计的早期历史到关于块和伽玛校正的详细编程信息,再到对这种新格式的应用程序支持,该文本是对该主题的完整描述性卷帙。

根据 Greg 的说法,PNG 的发音为“ping”(尽管我很难不分别发这三个字母的音),PNG 在过去四年中不断发展,以应对旧版 GIF 格式在设计和许可方面的限制。 Greg 具有独特的资格来描述该格式并讲述其演变的故事。 当 Thomas Boutell 首次宣布该项目时,他在场,并且撰写了许多关于该主题的文章——包括成为我在 Linux Gazettehttp://www.linuxgazette.com/)的“Graphics Muse”专栏中为数不多的投稿作者之一。

该文本分为三个部分:使用 PNG、PNG 的设计和使用 PNG 编程。 PNG 规范是平台无关的,Greg 在本文中也秉承了这一理念。 它涵盖了从 Linux 到 Windows 再到 BeOS 再到 OS/2 的所有内容; 然而,第一部分确实以 Macromedia 的 Fireworks 1.0(一个明显的非 Linux 应用程序)为重点结束。

Greg 在第一章中首先对栅格图形进行了不错的介绍。 这引出了对 PNG 最有用的事物的长篇描述。 我发现这一部分非常好。 虽然我知道使用 PNG 有优势,但我从来不知道具体原因是什么。 最重要的原因之一,即使不是立即,也将是它对标准化色彩管理的支持。

Greg 在第一部分中指出,PNG 的压缩效果不如 JPEG,但 JPEG 的压缩算法可能会导致图像中锐利边缘周围出现一些块状感。 他解释说,PNG 可能比网络浏览更适合中间编辑。 这是有道理的。 PNG 具有无损压缩,因此在您的编辑包中重复保存和重新加载每次都会生成相同的图像。 TIFF 是一种替代方案,但 TIFF 的压缩方案不提供 PNG 那样的速度与质量选项。 PNG 还可以实现极高的压缩级别而不会丢失数据。 当图像准备用于 Web 时,可能会首选转换为 JPEG,但这可以在发布之前的最后一步完成。 正如第 2 章提到的,MSIE 和 Netscape 都支持 PNG 在其最新浏览器中,尽管支持程度不同,并且它们发布的版本都不完全支持透明度。

第 2 章还对使用内容协商进行了有趣的讨论。 这是您指定一个带有 .var 后缀的文本文件,其中包含描述要显示的图像的多个选项之一的文本。 Apache 通过 mod_negotiation 模块支持此功能,并确定要将 .var 文件中指定的哪个图像文件发送到浏览器。 如果您热衷于支持地球上的任何浏览器,这是一个相当有趣的话题。

第 3 章是支持 PNG 格式的多个平台上的图像查看器的简单应用程序参考指南。 Greg 在这里很好地研究了许多不同的平台。

第 4 章介绍了几个支持 PNG 的图像编辑应用程序。 Greg 展示了如何在四个主要应用程序(Photoshop 4 和 5、Paint Shop Pro 和 GIMP)中的每一个中创建图像,以及如何使用 PNG 保存该图像。

第 5 章描述了许多命令行图像处理工具,这些工具支持转换为 PNG 格式或从 PNG 格式转换,或提供有关 PNG 文件的信息。 所有这些工具都在 Linux 上运行,Greg 在本章的每个特定于应用程序的部分末尾都提供了下载信息,就像他在文本中讨论的每个其他应用程序一样。 本章末尾列出了其他转换工具的参考样式列表。 每个条目都包含操作系统和下载信息。

本书的第一部分以关于支持 PNG 的 3D 应用程序的章节结尾。 Greg 在本章的第一部分介绍了 VRML 浏览器,并在后半部分简要讨论了 3D 建模器和其他 3D 应用程序。 不幸的是,Linux 下对 VRML 的支持不多,在 Linux 上可用的少数浏览器和 VRML 应用程序中,似乎更少有支持 PNG 的。 考虑到 PNG 已被采纳为 VRML 认证的两种格式之一,这似乎很奇怪。

在制作这本书时,O'Reilly 遵循了相同的基本行业惯例,即在书的中间塞入几张彩色插页。 在这种情况下,只有两页插页,他们还不如把它们省略掉。 与大多数图形文本一样,彩色插页之外以黑白印刷的对比图像不是很有用。 第一个是三张图像,显示一个孩子站在看起来像那种您的行李必须放进去才能带上飞机的箱子里。 这三张图像本应显示量化和抖动效果,但在这种黑白图像中几乎不可能看到。 在本书中间的两页彩色插页中,有这些相同图像的全彩版本,并且也放大了。 这些彩色图像确实很好地显示了图像的差异。 出版商什么时候才能意识到关于图形的文本需要是彩色的? 是的,这会增加成本,但也会增加信息价值。 我很感谢 SSC 在出版我的 GIMP 书籍时始终使用四色印刷。

一个小小的题外话:O'Reilly 在第 188 页放置了一张通常很烦人的广告卡。 该卡物理连接到书脊。 我试图把它拉出来,结果撕破了那页纸。 幸运的是,我没有撕破那页纸上的任何文字。 他们可能需要考虑在卡的连接点添加穿孔。

第 7 章开始了本书的第二部分,介绍了 PNG 的设计。 本章是对像 PNG 这样的互联网支持标准的演变的有趣历史。 我不了解的一个有趣的琐事出现在本章末尾,Greg 告诉我们,PNG 已被数字电视制造商(如索尼、飞利浦和诺基亚)采纳,以响应 MHEG-5 UK Profile,用于电视机和机顶盒。 我没有过多考虑电视的位图格式——我想对我来说有一个全新的图形领域需要探索。

第 8 章介绍了基本的 PNG 规范。 在这里,您将找到对块的描述,块是 PNG 格式的主要构建块。 第 9 章进入压缩信息。 虽然本书的第二部分本质上是技术性的,但最终用户会发现有用的提示散布在各处。 例如,在第 9 章中,有一些技巧涵盖了要使用哪种图像类型(例如 PNG 与 JPEG)以及在给定所选格式的情况下要寻找哪些设置。 Greg 随后为程序员提供了有关使用压缩和过滤的技巧。

我从程序员转行成为作家的原因之一是,我看到世界上到处都是会编写代码的人,但很少有人能解释代码。 我仍然看到许多技术人员尝试为大众写作但未能成功,经常滑回技术怪人的首字母缩写世界。 Greg 是罕见的人之一。 他的写作风格既清晰又完整,详细且易于理解。 他们应该为这种写作颁发奖章,或者至少是金色的小星星。

第 10 章进入了计算机图形学中更复杂的问题之一:伽玛校正和精确色彩。 显示设备在许多方面与它们的硬拷贝兄弟不同,甚至在彼此之间也存在细微的差异。 伽玛校正有助于确保在一个设备上显示的图像在另一个设备上看起来相同。 此处讨论了 PNG 的一些伽玛相关功能以及如何使用它们。

PNG 是一种可扩展的格式,它既提供了一组定义的公共块,又为实现者提供了一种添加自己的私有块的方法。 在第 11 章中,Greg 介绍了原始规范中描述的或已正式注册的许多扩展。 这些包括诸如直方图信息、低色彩显示器的建议调色板、分形图像支持和像素校准等主题。 本章的每一节都很短,对扩展的目的进行了快速解释,在某些情况下,还提供了详细的编程问题。 第二部分以关于 MNG(PNG 的多图像格式表亲)的章节结尾。 PNG 不处理动画格式; 它并非旨在这样做。 第 12 章深入讨论了 MNG,但这种格式仍在发展中且相当复杂。 然而,本章确实对该格式进行了很好的概述。

第三部分详细讨论了 PNG 规范的两个参考库,即 libpng 和 zlib。 后者是用于 PNG 图像的标准压缩库。 这两个库都是免费提供的,并且不受许可证限制。 第 13 章到第 15 章全面介绍了 libpng 和 zlib API 的编程指南,包括大量代码示例。 第 16 章在本书结尾简要介绍了 PNG 程序员感兴趣的其他库和规范。

第 16 章之后还有两个附加部分。 第一个是做得很好的逐章参考书目(尽管并非所有章节都列出了参考文献)。 第二个是术语表。 这里给出的定义非常好,大多数都提供了比其他文本中发现的典型的一两行描述更多的内容。

如果到目前为止还不明显,我将明确声明:我真的很喜欢这篇文章。 就我个人而言,我并不十分需要有关 PNG 格式的信息。 在我合作的人(例如出版商在要求屏幕截图或其他艺术作品时)更广泛地采用它之前,我可能会坚持使用 TIFF,但这与我喜欢这篇文章的原因无关。 我是一名作家,作家履行一项公共职能——他们提供信息(和/或娱乐)。 并非所有作家都能做到这一点,尤其是技术作家。 然而,Greg 在这篇关于 PNG 的文章中做得非常好。 他很好地涵盖了这个主题,并且他在这样做时理解了他的受众的需求。 他有权将这本书称为 权威指南

PNG: The Definitive Guide
Michael J. Hammel (mjhammel@graphics-muse.org) 是一位渴望成为图形艺术家的人、作家和软件开发人员。 他漫无目的地在地球上游荡,寻找冒险、安静的海滩和逃离支配他生活的电脑。
加载 Disqus 评论