一种处理图像的方法技术

技术编号:2945380 阅读:162 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种图像处理的方法,将系统显示驱动DLL文件以及该文件中定义的图形驱动程序接口DDI替换为预先构造的捕屏壳的DLL文件以及所述捕屏壳中定义的图形驱动程序接口DDI;获取系统表面的相关参数,在所述捕屏壳内根据所述系统表面的相关参数建立自定义绘图表面;通过系统调用所述捕屏壳的DDI在所述自定义绘图表面上进行图像绘制。本发明专利技术能够保证计算机显卡的正常运行和DirectX加速正常运行,避免了与DirectX加速冲突;同时,由于本发明专利技术是在显示驱动硬件层实现捕屏,也因此提高了捕获连续图像的处理效率。

【技术实现步骤摘要】

本专利技术涉及对图像数据处理的方法。
技术介绍
随着计算机技术应用和发展,用户经常希望将计算机屏幕上的图像进行 捕获,尤其是对图像进行连续捕获并对其进行处理。为了适应用户的需求, 相应的图像捕获技术应运而生。目前常用的连续捕获图像的技术有微软公司开发的Mirror Driver技术,定时器技术和消息钩子技术。但是使用Mirror Driver技术时容易产生与显卡DirectX加速冲突问题,而定时器技术和消息钩 子技术需要在应用层进行数据交换,因此对计算机CPU资源消耗较大,可能 会严重影响本机的正常操作。
技术实现思路
本专利技术提供一种图像处理的方法,能够提高捕获连续图像的处理效率, 同时避免与显卡DirectX加速冲突。本专利技术提供的处理图像的方法,包括步骤将系统显示驱动DLL文件以及该文件中定义的系统图形驱动程序接口 (DDI)替换为预先构造的捕屏壳的DLL文件以及捕屏壳中定义的图形驱动 程序接口 (DDI);获取系统表面的相关参数,在所述捕屏壳内根据所述系统表面的相关参 数建立自定义绘图表面;通过系统调用所述捕屏壳的DDI在所述自定义绘图表面上进行图像绘制。由于本专利技术采用捕屏壳捕获图#0由于捕屏壳在不改变系统显示驱动所有功能的情况下,增加了制作自定义绘图表面等系统显示驱动本身没有的功能,因此能够保证计算机显卡的正常运行和DirectX加速正常运行,避免了与 DirectX加速冲突;同时,由于本专利技术是在显示驱动硬件层实现捕屏,也因此 提高了捕获连续图像的处理效率。附图说明图1为本专利技术中处理图像的方法的流程图;图2为本专利技术中替换系统的DLL文件的流程图;图3为本专利技术中建立视频绘图表面及自定义绘图表面的流程图。具体实施方式本专利技术提供的处理图像的方法可以通过应用层接口来开启或关闭指定显 卡或指定表面的图像捕获功能,也可以通过该接口来设定所捕获的图像的区 域范围,同时本专利技术不仅适用于支持单显卡单输出或多输出情况,同样适用 于多显卡/多的情况。本专利技术首先构造捕屏壳(S101),然后通过捕屏壳实现图 像处理过程首先需要将系统显示驱动DLL文件以及该文件中定义的系统图 形驱动程序接口 (DDI)替换为预先构造的捕屏壳的DLL文件(S102)以及捕 屏壳中定义的图形驱动程序接口 (DDI)(S1(M);获取系统表面的相关参数 (S105),根据系统表面的相关参数建立自定义绘图表面(S106),当捕屏 壳触发处理图像的有关事件时,通过调用捕屏壳的DDI在自定义绘图表面上进 行图像绘制(S107)。另外,为了在自定义绘图表面上绘制图像时不影响视 频正常显示,可以在步骤S104中将系统的图形驱动程序接口 (DDI)在捕屏壳 中进4亍保存,作为一个优选实例,可以保存于捕屏壳的全局变量中,在S106 创建自定义绘图表面时根据所保存的系统的图形驱动程序接口 ( DDI)创建视 频绘图表面(S109),当S107步骤在自定义绘图表面上进行图像绘制时,先调用所保存的系统的DDI在视频绘图表面上进行图像绘制。为了将捕屏壳的自 定义绘图表面上绘制的图像导出需要在捕屏壳中定义信息查询DDI,上层应用 程序通过Windows提供的API "ExtEscape"或"Escape"来从所述捕屏壳中提 取所述自定义绘图表面的绘图结果(即所述自定义绘图表面的显存),然后 上层应用程序可以将所述绘图结果进行保存或传输给远端的客户程序显示 等。(S108)。由于捕获壳在不改变系统显示驱动所有功能的情况下,增加例如绘制自 定义绘图表面等一些系统显示驱动本身没有的功能,因此本专利技术能保证计算 机DirectX正常运行,支持多路输出的显卡,解决微软件^>开高效抓图的Mirror Driver技术与DirectX加速冲突问题,由于捕获壳在不改变系统显示驱动所有 功能的情况下,增加系统显示驱动本身没有的功能,所以能保证DirectX正常 运行,由于本专利技术是在显示驱动硬件层实现捕屏,所保证CPU资源占率低, 适用于计算机捕屏工程和系统集成,具有很好的市场价值与推广应用价值。以下阐述各过程的工作原理及实现方式, .曰/驱动程序的DLL文件,利用驱动钩子技术来实现图像捕获功能。驱动钩子技址来修改驱动程序的接口函数功能,进而实现驱动程序本身以外的功能的技 术。由于显示驱动程序支持图形引擎,而本专利技术的捕屏壳中的DLL文件具有 与系统的DLL同样的功能,因此该捕屏壳也具备支持图形引擎(也称绘制引 擎)GDI。 GDI输出有多个服务例程,其名字的形式是EngXxx。系统中的显示 驱动程序可以动态地连接到win32k,sys来直接访问这些例程。GDI服务例程包 括表面管理、绘图模拟以及路径、调色板、字体和文本服务等;在构建捕屏 壳时通常需要建立多个图形驱动程序接口 (DDI),以实现对GDI的各例程的 访问。例如,驱动导出接口DrvEnableDriver、创建表面接口、绘制表面删除 接口、物理设备删除接口、驱动程序卸载接口、绘图接口、响应Windows API 函数ExtEscape或Escape的查询信息接口等。对于各接口的功能下文中将结合 具体的图像处理过程进行阐述。由于本专利技术通过捕屏壳调用图形引擎GDI月良务函数实现图像处理功能,为 此,需要将系统的驱动程序文件替换为相对应的驱动壳文件,步骤S102中系 统的DLL文件的替换可以通过多种方式实现,例如 一种方法是通过修改注 册表中存放显示驱动DLL文件(不含扩展名)键的键值来实现替换,第二种 方法是先将系统的显示驱动DLL文件备份并更名,然后在安全模式、VAG模 式或其它方法用捕屏壳的DLL文件覆盖原来的显示驱动。对于上述通过^f务改注册表来实现系统驱动程序DLL文件替换的过程可以是51021、 从注册表中读取显示驱动DLL文件名称,并通过修改捕屏壳PE文 件,把系统显示驱动DLL文件名称永久写入到捕屏壳PE文件中,对于多显卡 的情况,还需要更换捕屏壳DLL文件名称为显示驱动DLL文件名称加上其它字 符或者独一无二的DLL文件名称,以标识不同的显卡;51022、 修改注册表把原来的显示驱动DLL文件名称替换成捕屏壳DLL文 件名称(不含扩展名);51023、 重启系统,以便启用捕屏壳,操作系统就把捕屏壳当作显卡的显 示驱动,捕屏壳就开始启用了。S104步骤中捕屏壳驱动导出接口需要返回支持DDI函数的指针列表,以 提供给图形引擎GDI,在这里我们可以实现显卡的DDI的替换,具体过程包括 调用GDI力。载DLL的服务例程来装载系统的显示驱动DLL文件(S103),并将 需要替换的系统显示驱动DDI函数指针分别保存到捕屏壳中, 一个优选实例中 可以保存于全局变量中,然后用捕屏壳中自定义DDI接口替换相对应的系统显 示驱动DDI函数指针,并将已替换后的DDI函数指针和未替换的函数指针列表 返回给GDI。步骤S105获取系统表面的相关参数的方法可以在硬件初始化的过程实 现,GDI通过调用捕屏壳的硬件初始化接口来进行初始化,实现步骤可以是调用S104步骤中存在全局变量中的系统显示驱动的石更件初始化接口 DDI 来初始化硬件,把这个接口还回值PEDV和颜色数、表面的宽度、高度等相关 参数保存到一个全局变量用于保存与自定义的本文档来自技高网...

【技术保护点】
一种处理图像的方法,其特征在于,包括步骤:将系统显示驱动DLL文件以及该文件中定义的图形驱动程序接口DDI替换为预先构造的捕屏壳的DLL文件以及所述捕屏壳中定义的图形驱动程序接口DDI;获取系统表面的相关参数,在所述捕屏壳内根据所述系统表面的相关参数建立自定义绘图表面;通过系统调用所述捕屏壳的DDI在所述自定义绘图表面上进行图像绘制。

【技术特征摘要】

【专利技术属性】
技术研发人员:刘明华朱建明潘远雄
申请(专利权)人:广东威创视讯科技股份有限公司
类型:发明
国别省市:81[中国|广州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1