获取计算机屏幕图像的方法转让专利

申请号 : CN200610113404.7

文献号 : CN100583022C

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙成昆李洪伟颜毅强蒋晓华彭绍平

申请人 : 联想(北京)有限公司

摘要 :

公开了一种获取计算机屏幕图像的方法,包括步骤:获取非硬件加速图像的更新区,并将所获得的更新区添加到更新区列表中;通过拦截图形/图像硬件加速接口的调用,来获取硬件加速图像及位置信息等;合并更新区列表中的更新区,并从帧缓冲器中获取合并后的更新区的图像数据。利用本发明的方法,可以同时快速地获取硬件加速图像和非硬件加速图像。

权利要求 :

1.一种获取计算机屏幕图像的方法,包括步骤: 获取非硬件加速图像的更新区,并将所获得的所述非硬件加速图像的更新区添加到更新区列表中; 通过拦截图形/图像硬件加速接口的调用,来获取硬件加速图像; 合并所述更新区列表中的更新区,并从帧缓冲器中获取合并后的更新区的图像数据,得到所有的非硬件加速图像数据;以及 将所述硬件加速图像的数据与所述非硬件加速图像数据叠加。

2. 如权利要求1所述的方法,其特征在于,所述获取非硬件加 速图像的更新区,并将所获得的所述非硬件加速图像的更新区添加到 更新区列表中的步骤,具体为:针对采用覆盖方式的硬件加速图像:获取所述硬件加速图像的至少包括有显示位置以及窗口尺 寸的信息;基于所述信息中的所述显示位置和所述窗口尺寸,在帧缓冲 器中产生与所述显示位置和所述窗口尺寸相应的更新区;以及将所述与所述显示位置和窗口尺寸相应的更新区加到更新 区列表中。

3. 如权利要求2所述的方法,其特征在于,所述在帧缓冲器中 产生与所述显示位置和所述窗口尺寸相应的更新区的步骤包括:在所述帧缓冲器的相应的区域中填充KeyColor。

4. 如权利要求1所述的方法,其特征在于,所述图形/图像硬件 加速接口包括DirectX和/或OpenGL。

说明书 :

获取计算机屏幕图像的方法

技术领域

'本发明涉及计算机图形图像显示技术领域,具体涉及一种能够完 整快速地获取个人计算机屏幕图像的方法。

背景技术

随着个人计算机计算能力和图形图像处理能力的逐步增强,计箅
机图形图像已从早期的2D位图和向量应用走向支持3D和视频,甚至 更复杂地图像,这给获取个人计算机所有显示内容(包括视频和3D 等需要硬件加速的图像),并同步地显示到远程终端(如远程控制,无 线投影,桌面共享等)或其它显示设备中(如无线显示设备)带来很大挑 战,特别是那些实时性要求较高的应用。 目前获取屏幕的方法主要有:
1) 将个人计算机显示适配器的VGA输出信号作为输入源,输入 到视频采集卡中,由视频采集卡对输入的数据进行处理。这种方案需 增加额外的视频采集卡硬件,需要对计算机进行硬件改造,设备配置 复杂,不具备通用性。
2) 禁用个人计算机显示适配器的硬件加速功能,使其显示的图 像全部绘制到FrameBuffer图面。通过"定时屏幕拷贝","更新区屏 幕拷贝","绘图元语拷贝"以及"屏幕镜像"等技术拷贝计算机 FrameBuffer中的位图数据。这种方案需要禁用当前显示设备的硬件 加速功能,使得在获取屏幕图像时,无法正常显示(或显示效果很差) 3D/视频等需要硬件加速的图像。例如,要获取在网页中嵌入视频的 屏幕时,由于硬件加速功能被禁用,这种方法无法获取视频窗口的图
3 )使用HOOK拦截对图形/图像硬件加速接口 (如200610113404.7 DirectX/OpenGL)的调用,实时获取通过显示适配器硬件加速后的图 像。这种方案仅能获取经过显示适配器硬件加速后的图像数据(如3D/ 视频图像),对于上面描述的例子,该方法仅能获取嵌入的视频图像, 同样不能获得屏幕上显示的所有图像。
因此,目前尚没有一个很好的办法,同时快速地获取硬件加速图像 与非硬件加速图像。

发明内容

鉴于上述问题,完成了本发明。本发明的目的是提供一种能够完 整快速地获取个人计算机屏幕图像的方法,可以同时快速地获取硬件 加速图像和非硬件加速图像。
在本发明的一个方面,提供了一种获取计算机屏幕图像的方法, 包括步骤:获取非硬件加速图像的更新区,并将所获得的所述非硬件 加速图像的更新区添加到更新区列表中;通过拦截图形/图像硬件加速 接口的调用,来获取硬件加速图像;合并所述更新区列表中的更新区; 并从帧缓冲器中获取合并后的更新区的图像数据,得到所有的非硬件 加速图像数据;以及将所述硬件加速图像的数据与所述非硬件加速图 像数据叠加。
此外,根据本发明的实施例,所述获取非硬件加速图像的更新区, 并将所获得的所述非硬件加速图像的更新区添加到更新区列表中的 步骤具体为:针对采用覆盖方式的硬件加速图像:获取所述硬件加速 图像的至少包括有显示位置以及窗口尺寸的信息;基于所述信息中的 所述显示位置和所述窗口尺寸,在帧缓冲器中产生与所述显示位置和 所述窗口尺寸相应的更新区;以及将所述与所述显示位置和所述窗口 尺寸相应的更新区加到更新区列表中。
此外,根据本发明的实施例,所述在帧缓冲器中产生与所述显示 位置和所述窗口尺寸相应的更新区的步骤包括:在所述帧缓冲器的相 应区域中填充KeyColor。
此外,根据本发明的实施例,所述图形/图像硬件加速接口包括 DirectX和/或OpenGL。
4利用本发明的上述方案, 一方面,无需添加任何硬件设备就可以 获得精确的屏幕显示图像,另一方面,可以同时获取计算机屏幕硬件 加速图像与非硬件加速图像,即完整的获取计算机屏幕图像。此外, 本发明还能精确地获取计算机屏幕的所有更新(包括非硬件加速图像 和非硬件加速图像),获取的数据量更小,获取速度更快。

附图说明

从下面结合附图的详细描述中,本发明的上述特征和优点将更明 显,其中-
图1是示出了用于说明根据本发明实施例的获取计算机屏幕图像
的方法所采用的软件模块之间的关系的图;以及
图2是示出了用于说明根据本发明实施例的获取计算机屏幕图像 的方法的流程图。

具体实施方式

下面,参考附图详细说明本发明的优选实施方式。在附图中,虽 然示于不同的附图中,但相同的附图标记用于表示相同的或相似的组 件。为了清楚和简明,包含在这里的已知的功能和结构的详细描述将 被省略,否则它们将使本发明的主题不清楚。
图1是示出了用于说明根据本发明实施例的获取计算机屏幕图像 的方法所采用的软件模块之间的关系的图。
如图1所示,本发明的方法采用了如下的软件模块:硬件加速图 像获取模块10,用于通过拦截所有对图形/图像硬件加速接口 (例如
DirectX/OpenGL)的调用,来获取硬件加速图像数据;非硬件加速图 像获取模块20,用于通过更新区屏幕镜像技术获取非硬件加速图像更 新,并获得的更新添加到更新区列表中;更新区合并与获取模块30, 用于合并更新区列表中的更新区,并从帧缓冲器(FrameBufftr)中 抓取合并后的屏幕区域的图像数据;以及叠加模块,用于将硬件加速 图像获取模块10所获得的硬件加速图像数据与更新区合并与获取模 块30所获取的图像数据叠加在一起,显示在屏幕上。
5图2是示出了用于说明根据本发明实施例的计算机屏幕图像的方
法的流程图。
如图2所示,在本发明的方法的开始,首先加载非硬件加速图像 获取模块20与硬件加速图像获取模块10。
在当前显示的图像是全屏硬件加速的图像的情况下,通过硬件加 速图像获取模块10从通过拦截对图形/图像硬件加速接口的调用来从 全屏硬件加速程序70实时获取硬件加速图像数据。
在当前显示的图像是非硬件加速图像的情况下,非硬件加速图像 获取模块10通过更新区屏幕镜像技术获取应用程序(GDI) 60要在 更新区列表中添加的所有非硬件加速图像的更新,并将该更新添加到 指定的更新区列表55中,在更新区列表55中仅放置更新的区域坐标。
在当前显示的图像是由绘制到帧缓冲器50中的硬件加速程序绘 制到帧缓冲器卯中的硬件加速图像,非硬件加速图像获取模块20产 生与绘制到帧缓冲器中的硬件加速图像大小相同的更新区,并将该更 新区添加到更新区列表55中。
在当前显示的图像是采用覆盖(Overlay)方式的硬件加速图像, 非硬件加速图像获取模块20利用Overlay程序80,即Overlay更新 调用接口,获取当前Overlay在屏幕中的显示位置,窗口尺寸以及显 示模式等信息,然后在帧缓冲器50的相应区域填充KeyCoIor (某一 眼睛不敏感的颜色值,如近似黑色,Overlay图像可以透过该颜色显 示)并产生相应大小更新区,添加到更新区列表55中;同时硬件加 速图像获取模块10通过硬件加速调用接口实时获取硬件加速图像数 据。
然后,更新区合并和数据获取模块30对更新区列表中的更新区 进行合并,并从帧缓冲器50中抓取合并后的屏幕区域数据,从而得 到所有的非硬件加速图像数据。
接下来,叠加模块40将所获得的硬件加速图像和非硬件加速图 像叠加在一起,在屏幕上显示。
下面结合一个具体的例子来说明在Overlay模式下本发明的方法 获取屏幕图像的过程。
6对于计算机屏幕上中同时显示非硬件加速图像和硬件加速图像
的场景,例如,在因特网页(1024*768)的左上角(0, 0)嵌入大小 为(480*320)的视频窗口,该视频窗口是通过Overlay显示的。
首先,加载非硬件加速图像获取模块20,获取所有网页中的更新, 该更新为一个或多个矩形区域,并将更新(一个或多个矩形)添加到 更新区列表55中。如上所述,更新区列表55中仅仅显示更新的一个 或多个矩形的位置和大小。
然后,加载硬件加速图像获取模块10,以拦截视频窗口对图形/ 图像硬件加速接口的调用,复制视频图像数据并获取视频窗口 Overlay图层在屏幕中的显示位置矩形坐标为(0, 0, 480, 320), 以及能够透明显示的KeyColor,如RGB (16, 0, 16),同时在网页 的相应区域(0, 0, 480, 320)填充该KeyColor颜色。填充完毕后 产生大小为(0, 0, 480, 320)矩形,将其添加到更新区列表55。
接下来,由更新区合并和数据获取模块30对更新区列表中的更 新去进行合并,并从帧缓冲器50中抓取合并后网页区域;
最后由叠加模块40将复制的视频图像和抓取的网页图像两部分 数据直接叠加,即得到最终的结果——网页左上角显示视频窗口。
上面的描述仅用于实现本发明的实施方式,本领域的技术人员应 该理解,在不脱离本发明的范围的任何修改或局部替换,均应该属于 本发明的权利要求来限定的范围,因此,本发明的保护范围应该以权 利要求书的保护范围为准。