cxImage处理tif图片时需要注意的地方

        tif图片主要分为两种:一种是单张的,还有一种是分层的,分层的tif图片其实就一张tif图片里面包含多张图片,然后可以翻页的那种,有点类似于动态GIF图片,不过tif的翻页不是自动的,需要手动点击翻页按钮才行,下面就是一张tif分层的图片(网上不太好找,可以自己下一个AcdSee做tif的图片)。

一、使用cxImage读取tif图片

        对于单张的tif图片,直接可以用以下方式来读取:

       CxImage*   cxImg;

       cxImg->Load(lpszPathName,CXIMAGE_FORMAT_TIF);

       对于分层的tif图片,可以定义一个CxImage的数组(不是CxImage*类型的数组)来保存分层tif图片中每张图片,具体如下所示:

      CxImage*    imgs;//此处为一个CxImage类型的数组

      CxImage*     cxImg;

      if(cxImg->Load(lpszPathName,CXIMAGE_FORMAT_TIF))

     {

              int  frameNum=cxImg->GetNumFrames();//获得分层tif图片的帧数

              imgs=new CxImage[frameNum];//动态创建CxImage数组

              for(int i=0;i<frameNum;i++)

             {

                   cxImg->SetFrame(i);//设置当前要读取的帧为第i帧

                   cxImg->Load(lpszPathName,CXIMAGE_FORMAT_TIF);

                   imgs[i].Copy(*cxImg);

              }

       }


二、保存tif图片

        保存tif格式图片也分为单张的和分层的tif图片两种。

        1、单张tif图片的保存

               直接使用cxImg->Save(lpszPathName,CXIMAGE_FORMAT_TIF);

         2、分层tif图片的保存

               FILE*    hFile;

               hFile=fopen(lpszPathName,"w+b");

               CxImageTIF   tifImg;//需要增加头文件ximatif.h,该头文件在CxImage目录下

               for(int i=0;i<frameNum;i++)

              {

                   //frameNum和imgs[i]的定义和读取分层tif图片中一样

                     tifImg.Copy(imgs[i]);

                     tifImg.Encode(hFile,TRUE);

               }

               fclose(hFile);


三、选择tif图片的压缩方式

        tif图片的可选压缩方式有很多种,比较常见的有JPEG,LZW,CCITT_T6等等,具体可以在相关的头文件里面查找。

        选择相应的压缩方式可以使用CxImage的SetCodecOption方法。

       例如:cxImg->SetCodecOption(COMPRESSION_LZW);

       需要注意的是,当选择JPEG压缩方式的时候,只能处理灰度或者是RGB图像


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值