本程序下载地址:  

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

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

  

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

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

  tiff拆分过程:

  

 /**************************************************************************
/* 函数名: DoSplitTiff
/*
/* 功能:
/* 执行OCR识别功能
/*
/* 参数:
/* strImagePath tiff图片绝对路径
/* strSavePath tiff图片拆分后保存的绝对路径
/*
/* 返回值:
/* 无
***************************************************************************/
void CTiffDlg::DoSplitTiff(CString & strImagePath, CString & strSavePath)
{
CxImage image;
int nFrameCnt = ; //加载图片,给image结构赋值
image.Load(strImagePath, CXIMAGE_FORMAT_TIF); //计算一张tiff图片是由多少张图片合成的
nFrameCnt = image.GetNumFrames(); //每次循环都加载1张tiff图片,并保存到m_pImageData中
for(int nIndex = ; nIndex < nFrameCnt; nIndex++)
{
image.SetFrame(nIndex);
image.Load(strImagePath, CXIMAGE_FORMAT_TIF); m_pImageData->Copy(image); //每张图片保存的路径
if(strSavePath.Right()== "\\")
{
strSavePath.Format("%d%s", nIndex, ".tiff");
}
else
{
strSavePath.Format("\\%d%s", nIndex, ".tiff");
} //保存
m_pImageData->Save(strSavePath, CXIMAGE_FORMAT_TIF);
}
}

tiff图片拆分的更多相关文章

  1. 多页的TIFF图片在aspx页面分页显示

    一.逻辑实现:将数据库中的二进制TIFF图片读出并分页显示在页面上. 1.显示界面 public FrameDimension MyGuid; ; ; public static MemoryStre ...

  2. acrgis导出成tiff图片,全是黑色

    任务:将北京道路矢量数据转成栅格然后导出成tiff格式图片. 1. 北京道路有很多种,矢量合并---用到了merge工具 arcgis位置:data management----general---- ...

  3. Java处理.tif或.tiff图片

    前言 Java将图片读取到内存用的是ImageIO,默认可以处理的图片格式如下: ImageIO.getWriterFileSuffixes() //此方法返回可以处理的图片格式数组 jpg bmp ...

  4. TIFF图片简介

    每个TIFF文件都是从指示字节顺序的两个字节开始的.“II”表示小字节在先.“MM”表示大字节在先字节顺序.后面的两个字节表示数字42.数字42是“为了其深刻的哲学意义"而选择的. 42的读 ...

  5. 关于Tiff图片的编解码

    TiffBitmapEncoder 类 (System.Windows.Media.Imaging)https://msdn.microsoft.com/zh-cn/library/ms635161( ...

  6. JPG、PNG和GIF图片的基本原理及优化方法

    一提到图片,我们就不得不从位图开始说起,位图图像(bitmap),也称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的.这些点可以进行不同的排列和染色以构成一副图片.当放大位图时,可以看见 ...

  7. JPG、PNG和GIF图片的基本原理及优…

    JPG.PNG和GIF图片的基本原理及优化方法 一提到图片,我们就不得不从位图开始说起,位图图像(bitmap),也称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的.这些点可以进行不同的 ...

  8. 简单爬虫 -- 以爬取NASA AOD数据(TIFF文件)为例

    目录: 网站分析 爬取下载链接 爬取TIFF图片 1.网站分析 主页面:https://neo.sci.gsfc.nasa.gov/view.php?datasetId=MYDAL2_M_AER_OD ...

  9. 文件上传,服务端压缩文件方法,重点是png与gif图片的压缩,保证了透明度与动画

    /// <summary> /// 上传文件帮助类 /// </summary> public class ImageUploadHelper { #region SaveVi ...

随机推荐

  1. javascript入门篇(一)

    未定义:undefined 布尔类型值:true,false 判断类型:typeof() 绝对值:Math.abs(-1) 声明常量:const   声明变量:var 小数两值互换如果出现问题,可以通 ...

  2. [九]基础数据类型之Boolean详解

      相对于其他的基础性 类型Boolean是很简单的 Boolean 基本数据类型boolean  的包装类 Boolean 类型的对象包含一个 boolean 类型的字段    属性简介 属性也比较 ...

  3. springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目

    一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...

  4. SDWebImage源码解析

    但凡经过几年移动开发经验的人去大公司面试,都会有公司问到,使用过哪些第三方,看过他们的源码嘛?而SDWebImage就是经常被面试官和应聘者的提到的.下面将讲述SDWebImage的源码解析以及实现原 ...

  5. DSAPI多功能组件编程应用-使用外部字体(包括资源文件)

    在软件开发过程中,尤其是比较个性化的程序,有时会需要使用非安装字体文件,比如发布的时候附带了一个专用字体,或者该字体文件直接被放入项目资源,当不希望把这个字体安装到用户的操作系统但又想使用它时,本示例 ...

  6. Visual Studio Code 语言设置

    下载Visual Studio Code,下载地址:https://code.visualstudio.com/ 参考官网安装之后,想要设置界面展示语言. 设置参考:https://code.visu ...

  7. 【开源】SpringBootNetty聊天室V1.2.0升级版本介绍

    前言 SpringBoot!微服务微架构的基础,Netty通信框架的元老级别框架,即之前的SpringBoot与Netty的实现聊天室的功能后已经过了不到一周的时间啦,今天我们更新了项目版本从V1.0 ...

  8. 折腾Java设计模式之解释器模

    解释器模式 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 意图 给定一个语言,定义它的文法表 ...

  9. 第六课 Html5常用标签 html5学习1

    HTML标签的认识一.标签的分类1.双标签 如<html> </html>2.单标签 如<br \> 换行标签 二.标签的关系1.嵌套关系 如<head> ...

  10. [JS设计模式]:工厂模式(3)

    简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料 ...