CN105224315B - 一种获取屏幕截图的方法及装置 - Google Patents

一种获取屏幕截图的方法及装置 Download PDF

Info

Publication number
CN105224315B
CN105224315B CN201510580440.3A CN201510580440A CN105224315B CN 105224315 B CN105224315 B CN 105224315B CN 201510580440 A CN201510580440 A CN 201510580440A CN 105224315 B CN105224315 B CN 105224315B
Authority
CN
China
Prior art keywords
sectional drawing
screen
pixel
information
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201510580440.3A
Other languages
English (en)
Other versions
CN105224315A (zh
Inventor
骆智彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Internet Security Software Co Ltd
Original Assignee
Beijing Kingsoft Internet Security Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Internet Security Software Co Ltd filed Critical Beijing Kingsoft Internet Security Software Co Ltd
Priority to CN201510580440.3A priority Critical patent/CN105224315B/zh
Publication of CN105224315A publication Critical patent/CN105224315A/zh
Application granted granted Critical
Publication of CN105224315B publication Critical patent/CN105224315B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本发明的实施例公开一种获取屏幕截图的方法及装置。方法包括:接收局部截图指令,获取屏幕截图指令在屏幕上对应的局部截图坐标参数,所述屏幕上的图像利用嵌入式系统的开放图形程序库的双缓冲矩阵内存进行加载;调用GL系统线程,在当前屏幕对应的内存矩阵中,读取所述局部截图坐标参数形成的区域内包含的图像信息;对读取的图像信息进行倒转处理,并将倒转处理的图像信息转换为图片。应用本发明,可以简化局部截图处理流程、提升局部截图效率。

Description

一种获取屏幕截图的方法及装置
技术领域
本发明涉及计算机图形处理技术,尤其涉及一种获取屏幕截图的方法及装置。
背景技术
目前,安卓(Android)操作系统以其操作简单且方便快捷的特性,越来越为用户所接受,已普遍应用于用户的工作以及生活中。随着Android操作系统的日益普及,用于界面设计的科库斯(Cocos)跨平台框架也广泛应用于游戏以及Android操作系统的各应用中,例如,基于Cocos跨平台框架,可以在游戏中实现类似于“炫耀一下”的屏幕截图功能,并可以将屏幕截图得到的图片发送给好友进行分享。
目前,终端设备,例如,移动电话、平板电脑、笔记本电脑、台式机电脑以及个人数字助理等,都提供有无损截取当前整个屏幕的全屏幕截图功能,其中,实现全屏幕截图的截屏方法主要包括:基于Android软件开发工具包(SDK,Software Development Kit)的无损截屏方法以及读取FB0的方法。
其中,基于Android SDK的无损截屏方法,是利用作为控件基类的视窗(View)自带的双缓冲机制,获取内部的屏幕效果。读取FB0的方法是利用读取/dev/graphics/fb0文件,通过获取ROOT权限,利用流的方式读取/dev/graphics/fb0文件的内容,然后将读取的内容转换成为RBG(像素点信息),并将转换的像素点信息转换成为图片,从而得到全屏幕截图。
但上述获取全屏幕截图的方法,只能实现全屏截取,当用户希望分享的只是全屏截图中的部分图像时,用户需要对全屏截图进行二次操作,才能获得想要的图像,这个流程增加了获取屏幕截图所需的时间,使得获取屏幕截图的效率较低。
发明内容
有鉴于此,本发明实施例提供一种获取屏幕截图的方法及装置,解决局部截图处理流程复杂、局部截图效率较低的技术问题。
为达到上述目的,本发明的实施例采用如下技术方案:
一方面,本发明实施例提供一种获取屏幕截图的方法,包括:
接收局部截图指令,获取屏幕截图指令在屏幕上对应的局部截图坐标参数,所述屏幕上的图像利用嵌入式系统的开放图形程序库的双缓冲矩阵内存进行加载;
调用图形程序库GL系统线程,在当前屏幕对应的内存矩阵中,读取所述局部截图坐标参数形成的区域内包含的图像信息;
对读取的图像信息进行倒转处理,并将倒转处理的图像信息转换为图片。
本发明实施例提供的获取屏幕截图的方法,通过利用嵌入式系统的开放图形程序库的双缓冲矩阵内存进行屏幕图像信息的加载,在需要进行局部截图时,调用GL系统线程,在当前屏幕对应的内存矩阵中,读取用户指定的局部截图坐标参数形成的区域内包含的图像信息,然后,对读取的图像信息进行倒转处理,并将倒转处理的图像信息转换为图片,得到局部截图,由于可以直接读取矩阵内存中用户指定的局部截图坐标参数形成的区域内包含的图像信息,能够实现一次性的局部截图,简化了局部截图处理流程,从而有效提升了局部截图的效率。
另一方面,本发明实施例提供一种获取屏幕截图的装置,包括:局部截图指令处理模块、调用模块以及图像获取模块,其中,
局部截图指令处理模块,用于接收局部截图指令,获取屏幕截图指令在屏幕上对应的局部截图坐标参数,所述屏幕上的图像利用嵌入式系统的开放图形程序库的双缓冲矩阵内存进行加载;
调用模块,用于调用GL系统线程,在当前屏幕对应的内存矩阵中,读取所述局部截图坐标参数形成的区域内包含的图像信息;
图像获取模块,用于对读取的图像信息进行倒转处理,并将倒转处理的图像信息转换为图片。
本发明实施例提供的获取屏幕截图的装置,局部截图指令处理模块通过利用嵌入式系统的开放图形程序库的双缓冲矩阵内存进行屏幕图像信息的加载,在需要进行局部截图时,调用模块调用GL系统线程,在当前屏幕对应的内存矩阵中,读取用户指定的局部截图坐标参数形成的区域内包含的图像信息,图像获取模块对读取的图像信息进行倒转处理,并将倒转处理的图像信息转换为图片,得到局部截图,由于可以直接读取矩阵内存中用户指定的局部截图坐标参数形成的区域内包含的图像信息,能够实现一次性的局部截图,简化了局部截图处理流程,从而有效提升了局部截图的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例获取屏幕截图的方法流程示意图;
图2为本发明实施例获取屏幕截图的装置结构示意图;
图3为本发明实施例获取屏幕截图的装置具体结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明实施例获取屏幕截图的方法流程示意图。参见图1,该方法包括:
步骤101,接收局部截图指令,获取屏幕截图指令在屏幕上对应的局部截图坐标参数,所述屏幕上的图像利用嵌入式系统的开放图形程序库的双缓冲矩阵内存进行加载;
本步骤中,嵌入式系统的开放图形程序库(OpenGL ES,Open Graphics Libraryfor Embedded Systems)是Android操作系统自带的一个库,是OpenGL三维图形应用程序接口(API,Application Programming Interface)的子集,针对移动电话、个人数字助理(PDA,Personal Digital Assistant)以及游戏主机等嵌入式终端设备而设计。
OpenGL ES是跨平台的、功能完善的二维(2D)以及三维(3D)图形API,是从OpenGL裁剪的定制而来,去除了glBegin/glEnd、四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性,广泛应用于图形绘制以及特效处理,用户利用OpenGL ES绘图时,可以通过修改OpenGL ES绘图中的参数信息,对绘图进行个性化设计。
本发明实施例中,考虑到可以修改OpenGL ES绘图中的参数信息,在实现局部截图时引入OpenGL ES,替换Android操作系统,一方面,用于对屏幕图像进行加载,即利用OpenGL ES管理和维护用于屏幕图像加载的双缓冲机制的两个矩阵内存,另一方面,可以通过访问并提取OpenGL ES绘图中的参数信息,实现局部信息提取。这样,用户可以根据实际需要,对矩阵内存中绘制的图像信息进行个性化设计,以及,通过设计图像信息提取函数,可以提取矩阵内存中绘制的全部或部分图像信息,从而能够实现局部截图。
本发明实施例中,OpenGL ES基于Android原生开发工具包(NDK,NativeDevelopment Kit)。由于Android应用程序运行在Dalvik虚拟机中,NDK允许用户使用类似C/C++之类的原生代码语言执行部分程序,例如,操作底层或操作内存,通过使用C/C++之类的原生代码语言,较容易实现操作功能。而发明中,矩阵内存属于操作内存的功能,因而,引入OpenGL ES,可以实现对矩阵内存中绘制的图像信息的访问、提取和修改。
AndroidNDK包括了:
1,从C/C++生成原生代码库所需要的工具和build files。
2,将一致的原生库嵌入可以在Android设备上部署的应用程序包文件(APK,Application Packages files,即.apk文件)中。
3,支持所有未来Android平台的一些列原生系统头文件和库。
关于引入OpenGL ES为公知技术,详情可以参考Android NDK自带例子(NDK目录\samples\hello-g12),在此略去详述。
本步骤中,作为一可选实施例,接收局部截图指令,获取屏幕截图指令在屏幕上对应的局部截图坐标参数包括:
A11,接收局部截图指令,获取用户操作轨迹;
本步骤中,如果用户在游戏过程中需要将炫酷的游戏界面的一部分进行截图,以与好友分享,则通过触发游戏界面中预先设置的局部截图功能,对当前游戏界面进行局部截图。
本发明实施例中,作为一可选实施例,接收局部截图指令包括:
B11,暂停应用程序界面;
本步骤中,在当前屏幕对应的应用程序界面出现用户期望截取的图片时,可以通过功能菜单、热键等方式暂停应用程序界面。
B12,点击功能菜单中的局部截图控件,发出局部截图指令以使OpenGL ES接收。
本步骤中,由于用户可能在应用程序界面,例如,游戏界面随时截取图片,因而,可以设置一较为方便快捷方式以启动或关闭局部截图功能。较佳地,功能菜单可以设置于屏幕下拉菜单中,即以下拉方式显示。
本发明实施例中,用户操作轨迹包括但不限于:手势操作轨迹、鼠标操作轨迹、触摸屏操作轨迹以及用户输入的操作轨迹等。对于用户输入的操作轨迹,用户可以直接输入局部截图坐标参数。
以鼠标操作轨迹为例,获取用户操作轨迹包括:
C11,监测到用户与屏幕接触,得到用户操作轨迹的起始坐标点;
本步骤中,对于台式电脑,用户与屏幕接触即用户在屏幕上按下鼠标按键,对于移动设备,用户与屏幕接触即用户触摸屏幕。
C12,监测到用户与屏幕脱离接触,得到用户操作轨迹的终止坐标点;
本步骤中,还可以设置一时间阈值,当按下鼠标按键至松开鼠标按键的时间小于该时间阈值时,表示用户可能是误操作,则结束流程。
C13,将所述用户操作轨迹的起始坐标点至终止坐标点覆盖的范围作为用户操作轨迹。
A12,计算用户操作轨迹对应的局部截图坐标参数。
本步骤中,局部截图坐标参数以第一横坐标信息、第二横坐标信息、第一纵坐标信息以及第二纵坐标信息进行表征,即包括:第一横坐标信息、第二横坐标信息、第一纵坐标信息以及第二纵坐标信息。作为另一可选实施例,局部截图坐标参数也可以横坐标信息、长度信息、纵坐标信息以及宽度信息进行表征。以鼠标操作轨迹为例,其中,
横坐标信息为起始坐标点的横坐标值与终止坐标点的横坐标值之和的一半;
长度信息为起始坐标点的横坐标值与终止坐标点的横坐标值之差的绝对值的一半;
纵坐标信息为起始坐标点的纵坐标值与终止坐标点的纵坐标值之和的一半;
宽度信息为起始坐标点的纵坐标值与终止坐标点的纵坐标值之差的绝对值的一半。
本发明实施例中,对于用户操作轨迹为不规则形状的情形,可以根据实际需要,设置更多个参数用以表征局部截图坐标参数。
作为另一可选实施例,利用嵌入式系统的开放图形程序库的双缓冲矩阵内存进行加载包括:
A21,嵌入式系统的开放图形程序库依据屏幕大小设置与所述屏幕大小相同的第一内存矩阵以及第二内存矩阵;
A22,提取当前屏幕中待加载的所有控件的各像素点的像素颜色值信息,将提取的各像素点的像素颜色值信息写入第一矩阵内存中相应像素点以进行绘制;
A23,在第一矩阵内存完成绘制后,将该绘制好的第一矩阵内存中的像素点信息传送给物理屏幕进行加载;同时,提取下一屏幕中待加载的所有控件的各像素点的像素颜色值信息,将提取的各像素点的像素颜色值信息写入第二矩阵内存中相应像素点以进行绘制,以在接收到屏幕切换指令后,将该绘制好的第二矩阵内存中的像素点信息传送给物理屏幕进行加载。
本步骤中,嵌入式系统的开放图形程序库将该绘制好的第二矩阵内存中的像素点信息传送给物理屏幕进行加载的同时,清空第一矩阵内存,提取下下一屏幕中待加载的所有控件的各像素点的像素颜色值信息,将提取的各像素点的像素颜色值信息写入第一矩阵内存中相应像素点以进行绘制,如此循环,使得嵌入式系统的开放图形程序库可以基于双缓冲矩阵内存进行屏幕图像信息的加载。
步骤102,调用GL系统线程,在当前屏幕对应的内存矩阵中,读取所述局部截图坐标参数形成的区域内包含的图像信息;
本步骤中,在OpenGL ES中,图形程序库(GL,Graphics Library)系统线程用于绘制待加载的屏幕图像信息,可以避免多线程的干扰。
本发明实施例中,作为一可选实施例,局部截图坐标参数包括:横坐标信息、长度信息、纵坐标信息以及宽度信息,在当前屏幕对应的内存矩阵中,读取所述局部截图坐标参数形成的区域内包含的图像信息包括:
在GL系统线程中调用函数setChildrenDrawingCacheEnabled()开启当前屏幕对应的内存矩阵;
调用函数getDrawingCache()在所述当前屏幕对应的内存矩阵中,获取所述局部截图坐标参数形成的区域内的各像素点的像素颜色值。
本步骤中,以横坐标信息以及纵坐标信息为中心,在长度方向上延伸长度信息对应的长度,以及,在宽度方向上延伸宽度信息对应的宽度,获取坐标信息在该区域内的各像素点的像素颜色值。
本发明实施例中,矩阵内存大小(像素点数)与屏幕大小(像素点数)相匹配。作为一可选实施例,设置内存矩阵中保存的图像内容的像素位,即图像内容以8位像素进行保存。
本发明实施例中,读取所述局部截图坐标参数形成的区域内包含的图像信息的程序代码段如下:
int myDataLength=w*h*4;//屏幕坐标长宽参数
GLubyte*buffer=(GLubyte*)malloc(screenWidth*screenHeight*8);//内存矩阵里保存的是8位像素的图像信息
glReadPixels(x,y,w,h,GL_RGBA,GL_UNSIGNED_BYTE,buffer);
步骤103,对读取的图像信息进行倒转处理,并将倒转处理的图像信息转换为图片。
本步骤中,在OpenGL ES的矩阵内存中存储的图像信息(内容),与屏幕的图像信息(内容)为水平翻转关系,也就是说,如果直接呈现OpenGL ES的矩阵内存中存储的图像内容对应的图像,与实际的图像相差180度。例如,如果OpenGL ES的矩阵内存中存储的图像内容为:
A B C D E
F G H I J
K L M N O
P Q R S T
则经过倒转处理后(水平翻转处理),得到的图像内容为:
P Q R S T
K L M N O
F G H I J
A B C D E
对于倒转处理,具体来说,将第一行数据与最后一行数据进行交换,第二行数据与倒数第二行数据交换,如此类推。
本发明实施例中,进行翻转处理的程序代码段如下:
作为一可选实施例,该方法还可以进一步包括:
显示、和/或,存储、和/或,分享转换得到的所述图片。
本步骤中,可以将截取的局部图像显示在当前界面上,也可以该截取的图片进行存储、分享等操作。例如,如果选择存储,则可以将该截取的图片保存到终端设备上默认的位置或指定的位置或外部存储设备;如果选择分享,则可以选择分享到微博、微信、QQ空间等社交网站,还可以使用短信、蓝牙等发送至其他用户终端设备。
由上述可见,相对于利用Android操作系统自带的双缓冲矩阵内存,无法局部读取图像,只能将整个屏幕图像读取出来,然后转成图片,再在转换的图片中进行截取操作,得到局部截图,使得获取屏幕截图所需的时间长,局部截图处理流程较为复杂,局部截图的效率较低。本发明实施例获取屏幕截图的方法,通过利用嵌入式系统的开放图形程序库的双缓冲矩阵内存进行屏幕图像信息的加载,在需要进行局部截图时,调用GL系统线程,在当前屏幕对应的内存矩阵中,读取用户指定的局部截图坐标参数形成的区域内包含的图像信息,然后,对读取的图像信息进行倒转处理,并将倒转处理的图像信息转换为图片,得到局部截图,从而基于Android NDK层实现局部截图。引入OpenGL ES,可以直接读取矩阵内存中用户指定的局部截图坐标参数形成的区域内包含的图像信息,能够实现一次性的局部截图,避免后续的图片处理过程,简化了局部截图处理流程,提升了局部截图的速度,减少了获取屏幕截图所需的时间,从而有效提升局部截图的效率。进一步地,嵌入式系统的开放图形程序库使用C++语言,相对于Android SDK截图采用的JAVA语言,在性能上处理更好一些。
图2为本发明实施例获取屏幕截图的装置结构示意图。参见图2,该装置包括:局部截图指令处理模块201、调用模块202以及图像获取模块203,其中,
局部截图指令处理模块201,用于接收局部截图指令,获取屏幕截图指令在屏幕上对应的局部截图坐标参数,所述屏幕上的图像利用嵌入式系统的开放图形程序库的双缓冲矩阵内存进行加载;
调用模块202,用于调用GL系统线程,在当前屏幕对应的内存矩阵中,读取所述局部截图坐标参数形成的区域内包含的图像信息;
图像获取模块203,用于对读取的图像信息进行倒转处理,并将倒转处理的图像信息转换为图片。
较佳地,该装置还可以进一步包括:
截图处理模块,用于显示、和/或,存储、和/或,分享转换得到的所述图片。
图3为本发明实施例获取屏幕截图的装置具体结构示意图。参见图3,该装置包括图2所示的局部截图指令处理模块201、调用模块202以及图像获取模块203。本发明实施例中,作为一可选实施例,局部截图指令处理模块201包括:获取单元31、计算单元32以及图像加载单元33,其中,
获取单元31,用于在需要进行局部截图时,暂停应用程序界面,点击功能菜单中的局部截图控件,发出局部截图指令后获取用户操作轨迹;
本发明实施例中,由于用户可能在应用程序界面,例如,游戏界面随时截取图片,因而,可以设置一较为方便快捷方式,例如,设置下拉菜单以启动或关闭局部截图功能。
本发明实施例中,用户操作轨迹包括但不限于:手势操作轨迹、鼠标操作轨迹、触摸屏操作轨迹以及用户输入的操作轨迹等。对于用户输入的操作轨迹,用户可以直接输入局部截图坐标参数。
作为一可选实施例,获取单元包括:暂停子单元、点击子单元、第一监测子单元、第二监测子单元以及轨迹获取子单元,其中,
暂停子单元,用于在需要进行局部截图时,暂停应用程序界面;
点击子单元,用于在暂停的应用程序界面中点击功能菜单中的局部截图控件,发出局部截图指令;
第一监测子单元,用于在发出局部截图指令后,监测到用户在屏幕上按下鼠标按键,得到用户操作轨迹的起始坐标点;
第二监测子单元,在监测到用户在屏幕上松开鼠标按键后,得到用户操作轨迹的终止坐标点;
轨迹获取子单元,用于将所述用户操作轨迹的起始坐标点至终止坐标点覆盖的范围作为用户操作轨迹。
本发明实施例中,局部截图坐标参数包括:第一横坐标信息、第二横坐标信息、第一纵坐标信息以及第二纵坐标信息。
作为一可选实施例,获取单元31还可以进一步包括:
判断子单元,用于判断按下鼠标按键至松开鼠标按键的时间是否小于预先设置的时间阈值,如果是,则结束流程,否则,通知轨迹获取子单元。
计算单元32,用于计算用户操作轨迹对应的局部截图坐标参数;
图像加载单元33,用于利用嵌入式系统的开放图形程序库的双缓冲矩阵内存将图像加载至屏幕。
本发明实施例中,作为一可选实施例,图像加载单元33包括:缓存区设置子单元、绘制子单元以及绘制处理子单元,其中,
缓存区设置子单元,用于触发嵌入式系统的开放图形程序库依据屏幕大小设置与所述屏幕大小相同的第一内存矩阵以及第二内存矩阵;
绘制子单元,用于提取当前屏幕中待加载的所有控件的各像素点的像素颜色值信息,将提取的各像素点的像素颜色值信息写入第一矩阵内存中相应像素点以进行绘制;
绘制处理子单元,用于在第一矩阵内存完成绘制后,将该绘制好的第一矩阵内存中的像素点信息传送给物理屏幕进行加载;同时,提取下一屏幕中待加载的所有控件的各像素点的像素颜色值信息,将提取的各像素点的像素颜色值信息写入第二矩阵内存中相应像素点以进行绘制,以在接收到屏幕切换指令后,将该绘制好的第二矩阵内存中的像素点信息传送给物理屏幕进行加载。
本发明实施例中,作为一可选实施例,调用模块202包括:内存矩阵开启单元61以及像素值获取单元62,其中,
内存矩阵开启单元61,用于在GL系统线程中调用函数setChildrenDrawingCacheEnabled()开启当前屏幕对应的内存矩阵;
像素值获取单元62,用于调用函数getDrawingCache()在所述当前屏幕对应的内存矩阵中,获取所述局部截图坐标参数形成的区域内的各像素点的像素颜色值。
本发明实施例中,以横坐标信息以及纵坐标信息为中心,在长度方向上延伸长度信息对应的长度,以及,在宽度方向上延伸宽度信息对应的宽度,获取坐标信息在该区域内的各像素点的像素颜色值。
本发明实施例中,作为一可选实施例,图像获取模块203包括:构建单元71、倒转处理单元72以及转换单元73,其中,
构建单元71,用于构建一空白图像信息模板,所述空白图像信息模板的行数与所述获取的图像信息包含的行数相同,所述包含的行数为n,其中,n为自然数;
倒转处理单元72,用于在获取的图像信息中,依次将第i行数据写入空白图像信息模板中的第(n-i+1)行,其中,i为自然数,小于或等于n;
转换单元73,用于将写入空白图像信息模板中的图像信息转换为图片。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (12)

1.一种获取屏幕截图的方法,其特征在于,该方法包括:
接收局部截图指令,获取屏幕截图指令在屏幕上对应的局部截图坐标参数,所述屏幕上的图像利用嵌入式系统的开放图形程序库OpenGL ES的双缓冲矩阵内存进行加载,所述OpenGL ES基于安卓原生开发工具包Android NDK;
调用图形程序库GL系统线程,在当前屏幕对应的内存矩阵中,读取所述局部截图坐标参数形成的区域内包含的图像信息;
对读取的图像信息进行倒转处理,并将倒转处理的图像信息转换为图片;
其中,所述读取所述局部截图坐标参数形成的区域内包含的图像信息包括:
在GL系统线程中调用函数setChildrenDrawingCacheEnabled()开启当前屏幕对应的内存矩阵;
调用函数getDrawingCache()在所述当前屏幕对应的内存矩阵中,获取所述局部截图坐标参数形成的区域内的各像素点的像素颜色值。
2.根据权利要求1所述的方法,其特征在于,所述利用嵌入式系统的开放图形程序库的双缓冲矩阵内存进行加载包括:
嵌入式系统的开放图形程序库依据屏幕大小设置与所述屏幕大小相同的第一内存矩阵以及第二内存矩阵;
提取当前屏幕中待加载的所有控件的各像素点的像素颜色值信息,将提取的各像素点的像素颜色值信息写入第一矩阵内存中相应像素点以进行绘制;
在第一矩阵内存完成绘制后,将该绘制好的第一矩阵内存中的像素点信息传送给物理屏幕进行加载;同时,提取下一屏幕中待加载的所有控件的各像素点的像素颜色值信息,将提取的各像素点的像素颜色值信息写入第二矩阵内存中相应像素点以进行绘制,以在接收到屏幕切换指令后,将该绘制好的第二矩阵内存中的像素点信息传送给物理屏幕进行加载。
3.根据权利要求1至2任一项所述的方法,其特征在于,所述方法进一步包括:
显示、和/或,存储、和/或,分享转换得到的所述图片。
4.根据权利要求1至2任一项所述的方法,其特征在于,所述接收局部截图指令,获取屏幕截图指令在屏幕上对应的局部截图坐标参数包括:
接收局部截图指令,获取用户操作轨迹;
计算用户操作轨迹对应的局部截图坐标参数。
5.根据权利要求4所述的方法,其特征在于,所述获取用户操作轨迹包括:
监测到用户与屏幕接触,得到用户操作轨迹的起始坐标点;
监测到用户与屏幕脱离接触,得到用户操作轨迹的终止坐标点;
将所述用户操作轨迹的起始坐标点至终止坐标点覆盖的范围作为用户操作轨迹。
6.根据权利要求1至2任一项所述的方法,其特征在于,所述局部截图坐标参数包括:第一横坐标信息、第二横坐标信息、第一纵坐标信息以及第二纵坐标信息。
7.一种获取屏幕截图的装置,其特征在于,该装置包括:局部截图指令处理模块、调用模块以及图像获取模块,其中,
局部截图指令处理模块,用于接收局部截图指令,获取屏幕截图指令在屏幕上对应的局部截图坐标参数,所述屏幕上的图像利用嵌入式系统的开放图形程序库OpenGL ES的双缓冲矩阵内存进行加载,所述OpenGL ES基于安卓原生开发工具包Android NDK;
调用模块,用于调用GL系统线程,在当前屏幕对应的内存矩阵中,读取所述局部截图坐标参数形成的区域内包含的图像信息;
图像获取模块,用于对读取的图像信息进行倒转处理,并将倒转处理的图像信息转换为图片;
其中,所述调用模块包括:内存矩阵开启单元以及像素值获取单元,其中,
内存矩阵开启单元,用于在GL系统线程中调用函数setChildrenDrawingCacheEnabled()开启当前屏幕对应的内存矩阵;
像素值获取单元,用于调用函数getDrawingCache()在所述当前屏幕对应的内存矩阵中,获取所述局部截图坐标参数形成的区域内的各像素点的像素颜色值。
8.根据权利要求7所述的装置,其特征在于,所述装置进一步包括:
截图处理模块,用于显示、和/或,存储、和/或,分享转换得到的所述图片。
9.根据权利要求7所述的装置,其特征在于,所述局部截图指令处理模块包括:获取单元、计算单元以及图像加载单元,其中,
获取单元,用于在需要进行局部截图时,暂停应用程序界面,点击功能菜单中的局部截图控件,发出局部截图指令后获取用户操作轨迹;
计算单元,用于计算用户操作轨迹对应的局部截图坐标参数;
图像加载单元,用于利用嵌入式系统的开放图形程序库的双缓冲矩阵内存将图像加载至屏幕。
10.根据权利要求9所述的装置,其特征在于,所述图像加载单元包括:缓存区设置子单元、绘制子单元以及绘制处理子单元,其中,
缓存区设置子单元,用于触发嵌入式系统的开放图形程序库依据屏幕大小设置与所述屏幕大小相同的第一内存矩阵以及第二内存矩阵;
绘制子单元,用于提取当前屏幕中待加载的所有控件的各像素点的像素颜色值信息,将提取的各像素点的像素颜色值信息写入第一矩阵内存中相应像素点以进行绘制;
绘制处理子单元,用于在第一矩阵内存完成绘制后,将该绘制好的第一矩阵内存中的像素点信息传送给物理屏幕进行加载;同时,提取下一屏幕中待加载的所有控件的各像素点的像素颜色值信息,将提取的各像素点的像素颜色值信息写入第二矩阵内存中相应像素点以进行绘制,以在接收到屏幕切换指令后,将该绘制好的第二矩阵内存中的像素点信息传送给物理屏幕进行加载。
11.根据权利要求9所述的装置,其特征在于,所述获取单元包括:暂停子单元、点击子单元、第一监测子单元、第二监测子单元以及轨迹获取子单元,其中,
暂停子单元,用于在需要进行局部截图时,暂停应用程序界面;
点击子单元,用于在暂停的应用程序界面中点击功能菜单中的局部截图控件,发出局部截图指令;
第一监测子单元,用于在发出局部截图指令后,监测到用户在屏幕上按下鼠标按键,得到用户操作轨迹的起始坐标点;
第二监测子单元,在监测到用户在屏幕上松开鼠标按键后,得到用户操作轨迹的终止坐标点;
轨迹获取子单元,用于将所述用户操作轨迹的起始坐标点至终止坐标点覆盖的范围作为用户操作轨迹。
12.根据权利要求7所述的装置,其特征在于,所述局部截图坐标参数包括:第一横坐标信息、第二横坐标信息、第一纵坐标信息以及第二纵坐标信息。
CN201510580440.3A 2015-09-11 2015-09-11 一种获取屏幕截图的方法及装置 Expired - Fee Related CN105224315B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510580440.3A CN105224315B (zh) 2015-09-11 2015-09-11 一种获取屏幕截图的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510580440.3A CN105224315B (zh) 2015-09-11 2015-09-11 一种获取屏幕截图的方法及装置

Publications (2)

Publication Number Publication Date
CN105224315A CN105224315A (zh) 2016-01-06
CN105224315B true CN105224315B (zh) 2018-10-19

Family

ID=54993312

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510580440.3A Expired - Fee Related CN105224315B (zh) 2015-09-11 2015-09-11 一种获取屏幕截图的方法及装置

Country Status (1)

Country Link
CN (1) CN105224315B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740151B (zh) * 2016-02-03 2018-05-08 惠州Tcl移动通信有限公司 一种移动终端ui控件查看处理方法及系统
CN106527882A (zh) * 2016-09-29 2017-03-22 北京小米移动软件有限公司 一种内容分享的方法、装置及终端
CN106775690B (zh) * 2016-12-02 2020-10-09 广东威创视讯科技股份有限公司 一种基于gdi/gdi+窗口被覆盖的录制方法及装置
CN108008991A (zh) * 2017-10-30 2018-05-08 努比亚技术有限公司 一种图片处理方法、终端及计算机可读存储介质
CN108449625B (zh) * 2018-01-30 2020-08-07 深圳市创梦天地科技股份有限公司 视频截图方法、装置及终端
CN114691252B (zh) * 2020-12-28 2023-05-30 中国联合网络通信集团有限公司 屏幕显示方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521020A (zh) * 2011-10-26 2012-06-27 华为终端有限公司 用于移动终端的应用屏幕截图方法和装置
CN102681853A (zh) * 2012-05-17 2012-09-19 中科方德软件有限公司 一种利用OpenGL ES实现安卓操作系统桌面3D转屏的方法及装置
CN103530055A (zh) * 2013-10-22 2014-01-22 北京奇虎科技有限公司 屏幕图像的截取方法及设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8881170B2 (en) * 2012-04-30 2014-11-04 Genesys Telecommunications Laboratories, Inc Method for simulating screen sharing for multiple applications running concurrently on a mobile platform

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521020A (zh) * 2011-10-26 2012-06-27 华为终端有限公司 用于移动终端的应用屏幕截图方法和装置
CN102681853A (zh) * 2012-05-17 2012-09-19 中科方德软件有限公司 一种利用OpenGL ES实现安卓操作系统桌面3D转屏的方法及装置
CN103530055A (zh) * 2013-10-22 2014-01-22 北京奇虎科技有限公司 屏幕图像的截取方法及设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
iOS应用截屏;极客传奇;《https://www.cnblogs.com/geek6/p/4104756.html》;20141118;第1-4页 *
OpenGL入门学习;doing5552;《http://www.cppblog.com/doing5552/archive/2009/01/08/71532.aspx》;20090108;第1-65页 *

Also Published As

Publication number Publication date
CN105224315A (zh) 2016-01-06

Similar Documents

Publication Publication Date Title
CN105224315B (zh) 一种获取屏幕截图的方法及装置
US11344806B2 (en) Method for rendering game, and method, apparatus and device for generating game resource file
KR102137041B1 (ko) 비디오 스트림의 실시간 페인팅
US9075561B2 (en) Systems, methods, and computer-readable media for managing collaboration on a virtual work of art
US20220139352A1 (en) Method and Device for Image Composition, Electronic Device and Storage Medium
KR20200087798A (ko) 특수 효과 프로그램 파일 패키지 및 특수 효과의 생성 방법과 장치, 전자 기기
EP2618245B1 (en) Image processing device, content creation device, image processing method, and data structure of content file
JP2004227393A (ja) アイコン描画システム、アイコン描画方法及び電子機器装置
CN106502667B (zh) 一种渲染方法及装置
CN103336816A (zh) 安卓系统上基于GPU实现的Canvas元素渲染方法及装置
KR20170120118A (ko) 잉크 스트로크 편집 및 조작 기법
KR20200094768A (ko) 스트로크 특수 효과 프로그램 파일 패키지의 생성 및 스트로크 특수 효과 생성 방법과 장치
CN109117237B (zh) 一种弹幕显示方法、装置及电子设备
CN111491208A (zh) 视频处理方法、装置、电子设备及计算机可读介质
CN114816135B (zh) 跨设备绘制系统
CN113129417A (zh) 一种全景应用中图像渲染的方法及终端设备
CN114968152A (zh) 减少virtio-gpu额外性能损耗的方法
US9190018B2 (en) Vector-based customizable pointing indicia
CN114712853A (zh) 游戏地图的加载、显示方法、装置、设备以及存储介质
CN108320315A (zh) 视图切换方法、装置、计算机设备和存储介质
CN113538302A (zh) 虚拟物品展示方法、装置和计算机可读存储介质
CN114064017A (zh) 一种绘制方法及相关设备
Moravapalle et al. Peek: A mobile-to-mobile remote computing protocol for smartphones and tablets
Wen et al. PaperWork: Exploring the Potential of Electronic Paper on Office Work
KR102515372B1 (ko) 원격 화면 출력을 구현하는 전자 서비스 제공 시스템, 방법, 프로그램, 컴퓨터 판독 가능한 기록매체

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20181019