zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    设计模式之装饰模式
    SpringAOP 失效解决方案、Spring事务失效
    Jmeter测试出现端口占用情况
    ElasticSearch创建动态索引
    Zuul + Ribbon 脱离Eureka完成负载均衡+重试机制
    TCP的三次握手与四次挥手笔记
    Java中的阻塞队列
    Jmeter5.1——聚合报告参数分析
    SpringCloud"灰度部署"——动态刷新网关配置
    JVM学习笔记——类加载过程
  • 原文地址:https://www.cnblogs.com/xydblog/p/3644654.html
Copyright © 2011-2022 走看看