文章
说LZW算法的专利已过期, 并介绍了如何打开libtiff库中的这一算法.
关键点是: libtiff-lzw-compression-kit-1.5.tar.gz
文件, 其中只含有一个真正有用的文件: tiff_lzw.c
用它来替换libtiff源代码中的同名文件. 这一方法适用于从3.5.5到3.6版本的libtiff
但是, 仅仅如此还不够, 至少在我的情况是如此(我的libtiff版本是3.5.6 beta, 不知道为什么当初引入库源码的人选择了个beta版, 不过看来还没有因此出什么问题). 还有一处需要修改的是:
if ( ! tif->tif_mode == O_RDONLY ) {
/* Handle removal of LZW compression */
if ( v == COMPRESSION_LZW ) {
TIFFError(tif->tif_name,
"LZW compression no longer supported due to Unisys patent enforcement");
v=COMPRESSION_NONE; }
|
这是在 _TIFFVSetField 函数中处理 TIFFTAG_COMPRESSION 时的特殊代码, 就是强制关闭LZW算法.
时过境迁, 现在可以使用LZW了, 手工把这段代码注释掉即可.
另外, libtiff-lzw-compression-kit-1.5.tar.gz 从文件名看是1.5, 这个1.5可能是指这个kit本身的版本号, 里面的 tif_lzw.c文件版本是1.4的:
/* $Header: /cvsroot/libtiff-lzw-compression-kit/tif_lzw.c,v 1.4 2003/11/03 14:47:36 dron Exp $ */
要使用Deflate 压缩, 还需要额外的zlib库.
要使用jpeg压缩, 还需要额外的 libjpeg库.
注意CCITT的 T.4的叫法, T.4是Group 3, 而不是Group 4.
T.6 才是Group 4.
不是二值图像(1bit)不要强制使用CCITT算法压缩, 至少我这里实验得到的图像结果是乱的, 不能用Acdsee打开
阅读(3276) | 评论(0) | 转发(0) |