概述本文所说的PNG图片处理,是指使用程序,剔除掉PNG文件中的非关键数据段,从而达到压缩文件大小的目的。 PNG文件由多个数据块组成。每个数据块结构如下:
 这些数据块中,有些是关键数据块,即每个PNG文件都必须包含的数据块.还有些数据块为可选数据块,也就是说可以视情况剔除的数据块。关键数据块包含以下这些:
 本来tRNS是非关键数据块,但是因为保留PNG文件的透明特性通常来说比较重要,所以在本文中,把tRNS也作为一个关键数据块来处理。
程序处理流程本文介绍的压缩程序,是指剔除特定文件夹下(包括子目录)中所有PNG文件的非关键数据块,只保留表2中的关键数据块,从而达到压缩的目的。本来,笔者还实现了另外一个版本,就是把所有压缩后的PNG,合并到一个二进制文件中,并且在该二进制文件头部,加上索引信息,指出各个压缩后的PNG文件的路径,偏移量和长度。这样做,虽然能在一定程度上维护各个图片文件的保密性,但是因为在J2ME程序中,在一个大文件中反复做seek操作的效率并不高,这反而有点画蛇添足。所以这个版本就被丢弃了。如果你确实要这么做,你可以把本程序处理后的PNG文件再打包成类似的二进制文件。
代码下载关于此程序的完整源代码,请从这里下载。
如何运行该程序为控制台程序,只需在控制台窗口执行jar即可,以下为运行截图:

作者信息Jagie,移动开发爱好者,可以通过chen_cwf@163.com与他联系。 本文来源于Jagie的google page:http://chencwf.googlepages.com/png_compress
|
|