发新话题
打印

笨笨数据压缩教程

笨笨数据压缩教程

大家好,我叫王笨笨。在过去的几个月里,因为工作需要,我比较多的关注了数据压缩技术的现状及其发展,并亲自动手实现了几个数据压缩模块。在这一过程中,我发现这一领域的中文技术资料极其匮乏。为此,王笨笨决定编写这本《数据压缩教程》,以便有一个总结记录这几个月学习过程的机会。

谁需要看这本书

如果你仅仅希望将你自己的一大堆霸占硬盘空间的大文件压缩成单个的小文件,那么不要看这本书,去看 Winzip,ARJ,RAR 等应用程序的帮助好了;如果你仅仅想把手中的精美图片、语音信息、CD音轨乃至动画、视频压缩保存,那么不要看这本书,去学习和使用 Photoshop、MP3 Compress 等多媒体文件编辑压缩工具就足够了。

如果你对数据能被压缩到如此之小感到惊讶和迷惑不解,如果你想知道上面提到的这许多压缩工具是如何工作的,如果你正要为自己的应用程序加入灵活的压缩、解压缩模块,如果你正在编写自己的图形图像编辑工具……那么,这本书就是你的选择,这里有详细的算法描述,有可供直接使用的源代码,有 Internet 上关于压缩技术的资源介绍,有对你进一步学习压缩技术的有效建议,快来吧!

不过记住,王笨笨比较笨,书中一定有不少缺点和错误,还望诸位高手指正。

压缩技术概貌

首先大致了解一下压缩技术的现状吧,不懂没有关系,了解一下而已。

压缩技术大致可以按照以下的方法分类:

                     压缩技术
                        |
                /------------------------------\
         通用无损数据压缩           多媒体数据压缩(大多为有损压缩)
               |                                |
    /----------------\            /------------------------------------\

基于统计         基于字典    音频压缩        图像压缩                视频压缩

模型的压         模型的压        |              |                       |

缩技术           缩技术         MP3等      /-------------------、      AVI
    |                 |                  二值   灰度   彩色   矢量     MPEG2等
  /------\          /-------------\      图像   图像   图像   图像

Huffman  算术      LZ77   LZ78   LZW       |      |      |      |

编码     编码       \-------------/     传真机  FELICS  GIF    ostScript
 |         |               |            标准    JPEG等  JPEG等 Windows WMF等

UNIX下    接近无损    KZIP、LHarc、ARJ、

的COMPACT 压缩极限    UNIX下的COMPRESS

程序等    的高级应用  程序等

本书也将大致遵循上面的结构展开,准备好了吗?开始

关于版权问题的几点补充说明

《笨笨数据压缩教程》中介绍的压缩算法中,有一部分受到美国专利法的保护(例如 LZW 算法的某些部分和高阶算术压缩算法的某些细节等) 。虽然在这一问题上王笨笨认为在计算机领域对某种抽象的算法而非程序实现加以保护有阻碍技术进步之嫌,但仍然需要提醒那些试图在自己的程序中实现某种压缩技术并将程序用于商业目的的人们,在实现以前,最好先对技术专利情况加以了解,以免最终陷入商业被动。

《笨笨数据压缩教程》中提供的源代码有一部分由王笨笨本人编写,有一部分由文思软件工作室的其他程序员编写,还有部分源代码由王笨笨从因特网上获得,但这些代码全部都是“自由代码”(free code)。如果你打算在你的程序中使用这些代码,你必须仔细阅读并遵守以下所有规定:

你可以使用、复制、发布、修改这些代码,并将其用于包括个人、组织、商业在内的各种目的,你不需要为此向我们支付任何款项。

我们不为使用这些代码的后果承担任何法律责任。但如果你在代码中发现了错误或对代码存有疑问,你可以使用 E-Mail 方式通知我们,我们会在力所能及的前提下提供技术支持。

不要以任何方式假定是你编写了这些代码。如果你将这些代码用于你的程序中,请你务必于程序的显著位置(例如 About 对话框或 Readme 文档中)注明“本程序中的某些代码由文思软件工作室提供”。
相关主题

TOP

发新话题