Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2336456
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2008-03-26 08:19:19

文章

说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打开
阅读(3057) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~