tiff图片拆分

本程序下载地址:  

  tiff格式的图片可以由多张图片合成, 也可以拆分为多张图片。不管是合成或者拆分,都借助了第三方开源库Cximage,对于这个图像库的使用,我们没有必要去一行一行的去看它的代码实现,我们只需要使用它提供出来的接口就可以了。下面先展示tiff图片的拆分,之后的博客再展示tiff格式图片的合成。

  程序运行结果,点击Tiff分割按钮,将“D:\src.tiff” 图片拆分为0.tiff, 1.tiff, 2.tiff三张图片。

  

  图像拆分主要使用到Cximage类中的GetNumFrames,SetFrame成员函数,分别用来获取图像帧的个数,设置一帧。

long GetNumFrames();  //返回一张图片共有多少帧
void SetFrame(long nFrame);  //设置一张图片的当前帧
 1 //tiff图片拆分响应函数
 2 void CTiffDlg::OnBtnTiffSplit() 
 3 {
 4     // TODO: Add your control notification handler code here
 5 
 6     //tiff图片路径
 7     CString strImagePath = "D:\src.tiff";        
 8 
 9     //保存的路径
10     CString strSavePath = "D:";                                                
11 
12     //执行tiff拆分功能
13     DoSplitTiff(strImagePath, strSavePath);
14 }

  tiff拆分过程:

  

 1 /**************************************************************************
 2 /*    函数名:    DoSplitTiff
 3 /*
 4 /*    功能:
 5 /*                执行OCR识别功能
 6 /*                
 7 /*    参数:
 8 /*                strImagePath            tiff图片绝对路径
 9 /*                strSavePath                tiff图片拆分后保存的绝对路径
10 /*
11 /*    返回值:
12 /*                无
13 ***************************************************************************/
14 void CTiffDlg::DoSplitTiff(CString & strImagePath, CString & strSavePath)
15 {
16     CxImage image;
17     int nFrameCnt = 0;
18 
19     //加载图片,给image结构赋值
20     image.Load(strImagePath, CXIMAGE_FORMAT_TIF);
21 
22     //计算一张tiff图片是由多少张图片合成的
23     nFrameCnt = image.GetNumFrames();
24 
25     //每次循环都加载1张tiff图片,并保存到m_pImageData中
26     for(int nIndex = 0; nIndex < nFrameCnt; nIndex++)
27     {
28         image.SetFrame(nIndex);
29         image.Load(strImagePath, CXIMAGE_FORMAT_TIF);
30 
31         m_pImageData->Copy(image);
32 
33         //每张图片保存的路径
34         if(strSavePath.Right(1)== "\")
35         {
36             strSavePath.Format("%d%s", nIndex, ".tiff");
37         }
38         else
39         {
40             strSavePath.Format("\%d%s", nIndex, ".tiff");
41         }
42 
43         //保存
44         m_pImageData->Save(strSavePath, CXIMAGE_FORMAT_TIF);
45     }
46 }
原文地址:https://www.cnblogs.com/xydblog/p/3644654.html