libtiff使用小记

这两天就跟libtiff库卯上了,总会遇到奇怪的问题。现在问题或直接或曲折的解决了,一一记录下来。

问题一:TIFFSetDirectory函数的使用。

代码目的:交叉读取tiff中两页的每一行,假设第一页tif为tif_0,第二页tif为tif_1。
我的目的就是先读tif_0的第i行,然后读tif_1的第i行,而后i++。代码如下:
 

for(int i = 0; i < tifh; i++)
{
     res = TIFFSetDirectory(tif, 0);                    //设置在第一页
     res = TIFFReadScanline(tif, (tdata_t)ptemp, i);    //读取一行 
 
     res = TIFFSetDirectory(tif, 1);                    //设置为第二页
     res = TIFFReadScanline(tif, (tdata_t)ptemp, i);    //读取一行
 
     ...
}

 问题现象:TIFFReadScanline读取失败。i = 0时是成功的,然后每隔大概12行的样子又成功一次。
其他都是读取失败,返回-1。
 
即时不切换页码,但是每次读取行数据前都setdirectory得话也会出现这个问题: 
for(int i = 0; i < tifh; i++)
{
     res = TIFFSetDirectory(tif, 0);                    //设置在第一页
     res = TIFFReadScanline(tif, (tdata_t)ptemp, i);    //读取一行 
 
     ...
}
问题分析:把同事请来,捯饬了老半天发现,当调用TIFFSetDirectory函数后,tif切换至设定的directory,并且设置当前行为0 。

所以如果刚刚TIFFSetDirectory之后,我想读取第2行的数据,就会返回错误码。测试了下如果只调用TIFFSetDirectory一次,但是直接就读第n>0行时,同样会返回-1 。也不知道我们的理解是否正确,这是跟到TIFFReadScanline函数里发现的。

问题解决:本以为调用些其他的函数能够解决这个问题的,尝试了半天无解。不能这么一行一行交叉着读取,我只好改换方法了,按顺序读取完毕再做其他操作了。
所以也不算是解决了问题,只是避开了问题。 

问题二:TIFFWriteEncodedStrip函数的使用。

问题分析:该函数的第三个参数是一个tdata_t类型的数据,也就是要写入tif的像素数据。
例如,我想生成的tif文件宽为w,高为h。
但我的tdata_t数据长度为w'*h,w'>w。
这在现实中应该常常碰到,因为对于单色的tif图像,像素按位排列,内存至少要一个字节,难免碰到不能被8整除的图像宽度值。
如果我硬生生的这么把这个tdata_t数据塞给TIFFWriteEncodedStrip函数,它会读取该数据中的前w*h位,并作为像素数据存入tif。
结果自然是生成的tif图像每行都有w'-w像素的偏移咯。
没办法,俺就用的TIFFWriteScanline。

写的够乱的,汗。

CRME多商户PHP v4.1.0 PC更新说明文档 1. 年/次卡商品 商家可自由创建时效卡(年卡、季卡、月卡等)、次数卡,灵活定价并配置服务内容,完美适配美业、健身、培训等不同业态需求,彻底解决传统线下卡项登记繁琐、余量模糊、核销不便等问题。 2. 店铺限制商品分类、商品类型 平台可以指定商家可使用的商品分类和商品类型; 商户/店铺入驻申请时,申请表单增加“平台商品分类选择(数量限制可配置)、商品类型选择”等字段,商户自由选择经营类目,平台严格把关。 3. 营销功能适配到店/同城配送 预售、秒杀、拼团、助力四大主流营销活动均支持“到店自提”与“同城配送”,适配本地生活零售场景,增强用户消费灵活性,提升商家获客与转化效率。 4. 系统优化 1. 平台、商户、店铺、代理商各自的后台登录界面分开 2. 平台余额充值增加退款操作,后台增加退款功能 3. 商品标签增加开始时间和结束时间 4. 管理端视频列表加载优化 5. 上传视频接口修改为:上传视频和封面图两个参数 6. 修改素材表增加封面图字段 7. 代理商后台数据权限控制,增加代理邀请店铺入驻专属链接 8. 领券中心的券根据消费者进入的商圈进行展示并领取 9. 移动端根据用户定位自动进入商圈 10. 预约商品到店服务支持按照自提点进行下单 11. 平台商品参数模版支持设置此类商品必须添加或者选填 12. PC商城增加扫码登录功能 13. 大图推荐可以批量设置,大图带有视频的商品在浏览时自动播放 14. 店铺二维码中LOGO使用商家LOGO 15. 代客下单搜索用户,手机号需要全量搜索 16. 所有活动列表,只展示正在进行中的活动
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值