CN105279006A - 基于Android系统的屏幕截图方法及终端 - Google Patents

基于Android系统的屏幕截图方法及终端 Download PDF

Info

Publication number
CN105279006A
CN105279006A CN201410326427.0A CN201410326427A CN105279006A CN 105279006 A CN105279006 A CN 105279006A CN 201410326427 A CN201410326427 A CN 201410326427A CN 105279006 A CN105279006 A CN 105279006A
Authority
CN
China
Prior art keywords
screen data
terminal
store path
framebuffer
android system
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.)
Granted
Application number
CN201410326427.0A
Other languages
English (en)
Other versions
CN105279006B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201410326427.0A priority Critical patent/CN105279006B/zh
Publication of CN105279006A publication Critical patent/CN105279006A/zh
Application granted granted Critical
Publication of CN105279006B publication Critical patent/CN105279006B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Telephone Function (AREA)

Abstract

本发明公开了一种基于Android系统的屏幕截图方法及终端,所述方法包括:接收输入指令,输入指令用于向安装Android系统的终端请求屏幕截图;获取终端的版本信息和存储路径信息,并将版本信息与预设版本进行比较;若版本信息在预设版本以上,则进一步判断终端是否存在屏幕截图Screencap存储路径;若存在Screencap存储路径,则依照Screencap存储路径读取终端的屏幕数据;以及对获取的屏幕数据进行压缩,生成屏幕数据对应的屏幕截图。本实施例通过对终端的版本信息和存储路径信息进行分析,保证优先从Screencap读取数据,保证生成的截屏图片不失真,并且通过对屏幕数据进行压缩以提高整个截图过程的效率。

Description

基于Android系统的屏幕截图方法及终端
技术领域
本发明属于通信技术领域,尤其涉及一种基于Android系统的屏幕截图方法及安装Android系统的终端。
背景技术
安卓(Android)是一种基于Linux的自由及开放源代码的操作系统,主要使用于终端,如智能手机和平板电脑,是目前市面上使用率最高的终端操作系统。随着终端的不断普及,用户对终端各项功能的要求越来越高,例如,利用终端进行屏幕截图,屏幕截图是指将屏幕显示内容保存为本地图片,供第三方使用,简称截屏。
以安装Android系统4.0以上的手机为例,通常的,Android4.0以上系统会自带屏幕截图(Screencap)工具,以实现对手机进行截屏,且这种方式生成的本地图片不会存在失真问题。但是由于Android系统会存在碎片化的问题,也就是各个不同型号的终端的设置可能会不一样,也就是,Android4.0以上系统可能会直接从帧缓冲(FrameBuffer)存储器中读取屏幕数据,并将屏幕数据压缩保存为本地图片,以实现对手机进行截屏。
可是从Framebuffer中直接读取屏幕数据,这种方式会使最终得到的截屏图片存在失真问题,比如:由于截屏图片像素点排列混乱而导致的花屏现象,或者由于截屏图片红绿蓝(RGB)通道混乱而导致的红屏现象等,从而无法最大限度地保证Android4.0以上系统的终端的截屏图片不失真。
因此,若对于Android4.0以上系统,从Framebuffer读取屏幕数据以实现截屏,会导致截屏图片失真的问题。
发明内容
本发明的目的在于提供基于Android系统的屏幕截图方法及安装Android系统的终端,旨在解决终端版本信息在预设版本(如4.0)以上,出现截屏图片失真的技术问题。
为解决上述技术问题,本发明实施例提供以下技术方案:
一种基于Android系统的屏幕截图方法,其中,所述方法包括:
接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图;
获取所述终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较;
若所述版本信息在所述预设版本以上,则进一步判断所述终端是否存在屏幕截图Screencap存储路径;若存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据;以及
对获取的所述屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
为解决上述技术问题,本发明实施例提供以下技术方案:
一种终端,其中,所述终端包括:
接收模块,用于接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图;
获取模块,用于获取所述终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较;
判断模块,用于若所述版本信息在所述预设版本以上,则进一步判断所述终端是否存在屏幕截图Screencap存储路径;
第一读取模块,用于若存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据;以及
压缩生成模块,用于对获取的所述屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
相对于现有技术,本实施例应用于安装Android系统的终端,获取终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较,若所述版本信息在所述预设版本以上且所述终端中存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据,将屏幕数据压缩保存为本地图片。本发明实施例中,通过对终端的版本信息和存储路径信息进行分析,保证优先从Screencap读取数据,保证生成的截屏图片不失真。进一步的,对于版本信息不在预设版本以上的情况,通过RGB通道排序修正和/或行像素修正的方式,解决从Framebuffer读取数据而导致截屏图片存在失真的问题;进一步的,通过对屏幕数据进行压缩以提高整个截图过程的效率。
附图说明
图1是本发明实施例提供的基于Android系统的屏幕截图系统的结构示意图;
图2是本发明第一实施例提供的基于Android系统的屏幕截图方法的流程示意图;
图3为本发明第二实施例提供的基于Android系统的屏幕截图方法的流程示意图;
图4为本发明第三实施例提供的基于Android系统的屏幕截图方法的流程示意图;
图5为本发明第四实施例提供的基于Android系统的屏幕截图方法的流程示意图;
图6为本发明第五实施例提供的基于Android系统的屏幕截图方法的流程示意图;
图7为本发明实施例提供的安装Android系统的终端的结构示意图;
图8为本发明实施例提供的安装Android系统的终端的另一结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行之作业的步骤及符号来说明,除非另有述明。因此,其将可了解到这些步骤及操作,其中有数次提到为由计算机执行,包括了由代表了以一结构化型式中的数据之电子信号的计算机处理单元所操纵。此操纵转换该数据或将其维持在该计算机之内存系统中的位置处,其可重新配置或另外以本领域技术人员所熟知的方式来改变该计算机之运作。该数据所维持的数据结构为该内存之实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域技术人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
如本申请所使用的术语“组件”、“模块”、“系统”、“接口”、“进程”等等一般地旨在指计算机相关实体:硬件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于是运行在处理器上的进程、处理器、对象、可执行应用、执行的线程、程序和/或计算机。通过图示,运行在控制器上的应用和该控制器二者都可以是组件。一个或多个组件可以有在于执行的进程和/或线程内,并且组件可以位于一个计算机上和/或分布在两个或更多计算机之间。
而且,要求保护的主题可以被实现为使用标准编程和/或工程技术产生软件、固件、硬件或其任意组合以控制计算机实现所公开的主题的方法、装置或制造品。本文所使用的术语“制造品”旨在包含可从任意计算机可读设备、载体或介质访问的计算机程序。当然,本领域技术人员将认识到可以对该配置进行许多修改,而不脱离要求保护的主题的范围或精神。
图1和随后的讨论提供了对实现本发明所述的终端所在的服务器的工作环境的简短、概括的描述。图1的工作环境仅仅是适当的工作环境的一个实例并且不旨在建议关于工作环境的用途或功能的范围的任何限制。实例服务器112包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、移动设备(比如移动电话、个人数字助理(PDA)、媒体播放器等等)、多处理器系统、消费型服务器、小型计算机、大型计算机、包括上述任意系统或设备的分布式计算环境,等等。
尽管没有要求,但是在“计算机可读指令”被一个或多个服务器执行的通用背景下描述实施例。计算机可读指令可以经由计算机可读介质来分布(下文讨论)。计算机可读指令可以实现为程序模块,比如执行特定任务或实现特定抽象数据类型的功能、对象、应用编程接口(API)、数据结构等等。典型地,该计算机可读指令的功能可以在各种环境中随意组合或分布。
图1图示了包括本发明的基于Android系统的屏幕截图装置的一个或多个实施例的服务器112的实例,所述基于Android系统的屏幕截图装置形成于所述终端。在一种配置中,服务器112包括至少一个处理单元116和存储器118。根据服务器的确切配置和类型,存储器118可以是易失性的(比如RAM)、非易失性的(比如ROM、闪存等)或二者的某种组合。该配置在图1中由虚线114图示。
在其他实施例中,服务器112可以包括附加特征和/或功能。例如,设备112还可以包括附加的存储装置(例如可移除和/或不可移除的),其包括但不限于磁存储装置、光存储装置等等。这种附加存储装置在图1中由存储装置120图示。在一个实施例中,用于实现本文所提供的一个或多个实施例的计算机可读指令可以在存储装置120中。存储装置120还可以存储用于实现操作系统、应用程序等的其他计算机可读指令。计算机可读指令可以载入存储器118中由例如处理单元116执行。
本文所使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储器118和存储装置120是计算机存储介质的实例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备、或可以用于存储期望信息并可以被服务器112访问的任何其他介质。任意这样的计算机存储介质可以是服务器112的一部分。
服务器112还可以包括允许服务器112与其他设备通信的通信连接126。通信连接126可以包括但不限于调制解调器、网络接口卡(NIC)、集成网络接口、射频发射器/接收器、红外端口、USB连接或用于将服务器112连接到其他服务器的其他接口。通信连接126可以包括有线连接或无线连接。通信连接126可以发射和/或接收通信媒体。
术语“计算机可读介质”可以包括通信介质。通信介质典型地包含计算机可读指令或诸如载波或其他传输机构之类的“己调制数据信号”中的其他数据,并且包括任何信息递送介质。术语“己调制数据信号”可以包括这样的信号:该信号特性中的一个或多个按照将信息编码到信号中的方式来设置或改变。
服务器112可以包括输入设备124,比如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备和/或任何其他输入设备。设备112中也可以包括输出设备122,比如一个或多个显示器、扬声器、打印机和/或任意其他输出设备。输入设备124和输出设备122可以经由有线连接、无线连接或其任意组合连接到服务器112。在一个实施例中,来自另一个服务器的输入设备或输出设备可以被用作服务器112的输入设备124或输出设备122。
服务器112的组件可以通过各种互连(比如总线)连接。这样的互连可以包括外围组件互连(PCI)(比如快速PCI)、通用串行总线(USB)、火线(IEEE1394)、光学总线结构等等。在另一个实施例中,服务器112的组件可以通过网络互连。例如,存储器118可以由位于不同物理位置中的、通过网络互连的多个物理存储器单元构成。
本领域技术人员将认识到,用于存储计算机可读指令的存储设备可以跨越网络分布。例如,可经由网络128访问的服务器130可以存储用于实现本发明所提供的一个或多个实施例的计算机可读指令。服务器112可以访问服务器130并且下载计算机可读指令的一部分或所有以供执行。可替代地,服务器112可以按需要下载多条计算机可读指令,或者一些指令可以在服务器112处执行并且一些指令可以在服务器130处执行。
本文提供了实施例的各种操作。在一个实施例中,所述的一个或多个操作可以构成一个或多个计算机可读介质上存储的计算机可读指令,其在被服务器执行时将使得计算设备执行所述操作。描述一些或所有操作的顺序不应当被解释为暗示这些操作必需是顺序相关的。本领域技术人员将理解具有本说明书的益处的可替代的排序。而且,应当理解,不是所有操作必需在本文所提供的每个实施例中存在。
而且,本文所使用的词语“优选的”意指用作实例、示例或例证。奉文描述为“优选的”任意方面或设计不必被解释为比其他方面或设计更有利。相反,词语“优选的”的使用旨在以具体方式提出概念。如本申请中所使用的术语“或”旨在意指包含的“或”而非排除的“或”。即,除非另外指定或从上下文中清楚,“X使用A或B”意指自然包括排列的任意一个。即,如果X使用A;X使用B;或X使用A和B二者,则“X使用A或B”在前述任一示例中得到满足。
而且,尽管已经相对于一个或多个实现方式示出并描述了本公开,但是本领域技术人员基于对本说明书和附图的阅读和理解将会想到等价变型和修改。本公开包括所有这样的修改和变型,并且仅由所附权利要求的范围限制。特别地关于由上述组件(例如元件、资源等)执行的各种功能,用于描述这样的组件的术语旨在对应于执行所述组件的指定功能(例如其在功能上是等价的)的任意组件(除非另外指示),即使在结构上与执行本文所示的本公开的示范性实现方式中的功能的公开结构不等同。此外,尽管本公开的特定特征已经相对于若干实现方式中的仅一个被公开,但是这种特征可以与如可以对给定或特定应用而言是期望和有利的其他实现方式的一个或多个其他特征组合。而且,就术语“包括”、“具有”、“含有”或其变形被用在具体实施方式或权利要求中而言,这样的术语旨在以与术语“包含”相似的方式包括。
请参阅图2,图2是本发明第一实施例提供的基于Android系统的屏幕截图方法的流程示意图。
在步骤S201中,接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图。
其中,所述屏幕截图方法应用于基于Android系统的终端,所述终端可以包括平板PC、个人数字助理(PersonalDigitalAssistant,PDA)、连网板(webpad)、可携式电话等具备储存单元并安装有微处理器而具有运算能力的终端机。
在步骤S202中,获取所述终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较。
其中,所述终端的版本信息具体指安装的Android系统的版本号信息,所述终端的存储路径信息具体是指所述终端内存在有哪些存储路径。
本发明实施例中所述存储路径包括屏幕截图Screencap存储路径和帧缓冲Framebuffer存储路径,其中,在Android系统中,Screencap的存储路径为“/system/bin/screencap”,Framebuffer的存储路径为“/dev/graphics/fb0”。
在步骤S203中,若所述版本信息在所述预设版本以上,则进一步判断所述终端是否存在屏幕截图Screencap存储路径。
在步骤S204中,若存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据。
所述步骤203至步骤204可具体为:
可以理解的是,所述Screencap中的信息包括:所述终端屏幕对应的原始的屏幕数据、所述终端屏幕x、y分辨率(xRes,yRes)、每个像素点的位数(bits_per_pixel)、红绿蓝RGB颜色对于像素点的位移(red.offset、green.offset、blue.offset)以及RGB颜色对于像素点的位宽(red.length、green.length、blue.length)等。其中,所述终端屏幕对应的原始的屏幕数据具体是指接收到输入指令时,当前终端屏幕对应的原始的屏幕数据。
其中,依照所述Screencap存储路径读取所述终端的屏幕数据,是指,从所述Screencap中读取所述终端的屏幕数据,具体地可以为,根据所述Screencap中的所述终端屏幕x、y分辨率、每个像素点的位数、红绿蓝RGB颜色对于像素点的位移以及RGB颜色对于像素点的位宽等Screencap信息的设置,从所述Screencap中读取所述终端的屏幕数据。
在步骤S205中,对获取的所述屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
将经读取输出的所述终端屏幕对应的原始的屏幕数据,进行压缩处理,以生成与所述屏幕数据对应的屏幕截图。其中,通过screencap读取最终生成的屏幕截图可保存为PNG格式文件或RGBRAW文件。
由上述可知,本实施例提供的基于Android系统的屏幕截图方法应用于安装Android系统的终端,本实施例获取终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较,若所述版本信息在所述预设版本以上且所述终端中存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据,将屏幕数据压缩保存为本地图片。本发明实施例中,通过对终端的版本信息和存储路径信息进行分析,保证优先从Screencap读取数据,保证生成的截屏图片不失真。进一步的,通过对屏幕数据进行压缩以提高整个截图过程的效率。
请参阅图3,图3为本发明第二实施例提供的基于Android系统的屏幕截图方法的流程示意图。
在步骤S301中,接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图。
在步骤S302中,获取所述终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较。
其中,所述终端的版本信息具体指安装的Android系统的版本号信息,所述终端的存储路径信息具体是指所述终端内存在有哪些存储路径。
本发明实施例中所述存储路径包括屏幕截图Screencap存储路径和帧缓冲Framebuffer存储路径,其中,在Android系统中,Screencap的存储路径为“/system/bin/screencap”,Framebuffer的存储路径为“/dev/graphics/fb0”。
可以理解的是,所述预设版本可以预先设置在所述终端中,本实施例中,所述预设版本为Android系统4.0。
其后,根据所述版本信息与预设版本进行比较的结果,相应的执行步骤S303a或步骤S303b:
在步骤S303a中,若所述版本信息在所述预设版本以上,则进一步判断所述终端是否存在屏幕截图Screencap存储路径。
优选的,若所述预设版本为Android系统4.0,则所述终端的版本信息为Android系统4.0以上,则进一步判断所述终端是否存在屏幕截图Screencap存储路径。
可以理解的是,一般来说,Android4.0以上的系统是自带Screencap以实现截图,但是由于Android系统会存在碎片化的问题,也就是各个不同型号的终端的设置可能会不一样,因此,在确认为Android系统4.0以上之后,还需要进一步判断所述终端是否存在屏幕截图Screencap存储路径。
其后,根据判断所述终端是否存在屏幕截图Screencap存储路径的结果,相应的执行步骤S304a或步骤S304b;
在步骤S303b中,若所述版本信息不在所述预设版本以上,则依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。
优选的,若所述预设版本为Android系统4.0,则所述终端的版本信息不是Android系统4.0以上,则依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。
可以理解的是,所述Framebuffer中的信息包括:所述终端屏幕对应的原始的屏幕数据、所述终端屏幕x、y分辨率(xRes,yRes)、Framebuffer本身缓存设置的行宽度(即每行像素点line_length)、每个像素点的位数(bits_per_pixel)、红绿蓝RGB颜色对于像素点的位移(red.offset、green.offset、blue.offset)以及RGB颜色对于像素点的位宽(red.length、green.length、blue.length)等。其中,所述终端屏幕对应的原始的屏幕数据具体是指接收到输入指令时,当前终端屏幕对应的原始的屏幕数据。
其中,依照Framebuffer存储路径读取所述终端的屏幕数据,是指,从所述Framebuffer中读取所述终端的屏幕数据,具体地可以为,根据所述Framebuffer中的所述终端屏幕x、y分辨率、Framebuffer本身缓存设置的行宽度、每个像素点的位数、红绿蓝RGB颜色对于像素点的位移以及RGB颜色对于像素点的位宽等Framebuffer信息的设置,从所述Framebuffer中读取所述终端的屏幕数据。
优选的,在依照Framebuffer存储路径读取所述终端的屏幕数据的过程中,以避免采用读取的屏幕数据而压缩的图片产生失真,执行步骤S305b。
在步骤S304a中,若存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据。
可以理解的是,所述Screencap中的信息包括:所述终端屏幕对应的原始的屏幕数据、所述终端屏幕x、y分辨率(xRes,yRes)、每个像素点的位数(bits_per_pixel)、红绿蓝RGB颜色对于像素点的位移(red.offset、green.offset、blue.offset)以及RGB颜色对于像素点的位宽(red.length、green.length、blue.length)等。其中,所述终端屏幕对应的原始的屏幕数据具体是指接收到输入指令时,当前终端屏幕对应的原始的屏幕数据。
其中,依照所述Screencap存储路径读取所述终端的屏幕数据,是指,从所述Screencap中读取所述终端的屏幕数据,具体地可以为,根据所述Screencap中的所述终端屏幕x、y分辨率、每个像素点的位数、红绿蓝RGB颜色对于像素点的位移以及RGB颜色对于像素点的位宽等Screencap信息的设置,从所述Screencap中读取所述终端的屏幕数据。
依照所述Screencap存储路径读取所述终端的屏幕数据后,执行步骤S305。
在步骤S304b中,若不存在Screencap存储路径,则依照Framebuffer存储路径读取所述终端的屏幕数据。
可以理解的是,依照Framebuffer存储路径读取所述终端的屏幕数据,是指,从所述Framebuffer中读取所述终端的屏幕数据,具体地可以为,根据所述Framebuffer中的所述终端屏幕x、y分辨率、Framebuffer本身缓存设置的行宽度、每个像素点的位数、红绿蓝RGB颜色对于像素点的位移以及RGB颜色对于像素点的位宽等Framebuffer信息的设置,从所述Framebuffer中读取所述终端的屏幕数据。
优选的,在依照Framebuffer存储路径读取所述终端的屏幕数据的过程中,以避免采用读取的屏幕数据而压缩的图片产生失真,执行步骤S306。
在步骤S305中,对获取的所述屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
将经读取输出的所述终端屏幕对应的原始的屏幕数据,进行压缩处理,以生成与所述屏幕数据对应的屏幕截图。
优选地,调用预设的图片处理数据库,并根据预设的压缩图片的尺寸和预设的压缩图片的质量对获取的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图并保存。
可以理解的是,所述图片处理数据库可以预先设置在所述终端中,其中,所述图片处理数据库可以优选为libjpeg/libpng数据库;所述压缩图片的尺寸以及所述压缩图片的质量可以预先设置在所述终端中,也可以根据当前具体场景,由终端用户自定义设置,此处不作具体限定。
在步骤S306中,对读取的所述屏幕数据进行修正处理,生成修正后的屏幕数据。
可以理解的是,虽然从Framebuffer中直接读取屏幕数据,这种方式优点是速度快,但是可能会存在失真问题,如由于屏幕图片像素点排列混乱而造成的花屏现象和/或由于屏幕图片RGB通道混乱而造成的红屏现象等。
基于此,本发明对读取的所述屏幕数据进行RGB通道排序修正和/或行像素修正处理,生成修正后的屏幕数据,以解决所述红屏现象和/或花屏现象。
在步骤S307中,对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
将经读取输出的所述终端屏幕对应的原始的屏幕数据,修正后进行压缩处理,以生成与所述屏幕数据对应的屏幕截图。
优选地,调用预设的图片处理数据库,并根据预设的压缩图片的尺寸和预设的压缩图片的质量对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图并保存。
可以理解的是,所述图片处理数据库可以预先设置在所述终端中,其中,所述图片处理数据库可以优选为libjpeg/libpng数据库;所述压缩图片的尺寸以及所述压缩图片的质量可以预先设置在所述终端中,也可以根据当前具体场景,由终端用户自定义设置,此处不作具体限定。
需要说明的是,在该实施例中,所述Screencap或所述Framebuffer中的提供的信息可以根据现有进行具体确定,实施例中仅为举例而列举一部分信息;并且,两者对信息的存储形式是不一致的,例如,两者都存储有终端屏幕对应的原始的屏幕数据,但是数据的存储方式不一样;又如,两者都提供了红绿蓝RGB颜色对于像素点的位移的信息,但是该信息的具体设置是不一样的,此处不作具体描述。
另外,从所述Screencap或从所述Framebuffer读取屏幕数据的过程,均可以根据现有技术进行实现;比如,以从所述Framebuffer读取屏幕数据为例,将Framebuffer设备打开,获取Framebuffer的信息,如根据上述的Framebuffer本身缓存设置的行宽度、终端屏幕x、y分辨率、每个像素点的位数,计算出终端屏幕的数据长度,最后将Framebuffer中对应长度的数据,通过mmap的方式,直接映射进内存。
由上述可知,本实施例提供的基于Android系统的屏幕截图方法应用于安装Android系统的终端,本实施例获取终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较,若所述版本信息在所述预设版本以上且所述终端中存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据,将屏幕数据压缩保存为本地图片。本发明实施例中,通过对终端的版本信息和存储路径信息进行分析,保证优先从Screencap读取数据,保证生成的截屏图片不失真。进一步的,对于版本信息不在预设版本以上的情况,通过RGB通道排序修正和/或行像素修正的方式,解决从Framebuffer读取数据而导致截屏图片存在失真的问题;进一步的,通过对屏幕数据进行压缩以提高整个截图过程的效率。
请参阅图4,图4是本发明第三实施例提供的基于Android系统的屏幕截图方法的流程示意图。
在该实施例中,终端根据版本信息和存储路径信息,确定出所述终端依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。即所述终端的版本信息不在所述终端的预设版本以上,或者,所述终端不存在Screencap存储路径,其中所述预设版本为Android系统4.0以上版本。
所述方法包括:
在步骤S401中,接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图。
在步骤S402中,获取所述终端的版本信息和存储路径信息。
在步骤S403中,根据所述终端的版本信息和存储路径信息,确定依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。
其中,所述终端的版本信息具体指安装的Android系统的版本号信息,所述终端的存储路径信息具体是指所述终端内存在有哪些存储路径。
在该实施例中,所述终端版本信息不在所述终端的预设版本以上,或者,所述终端不存在Screencap存储路径,在该情况下,所述终端依照Framebuffer存储路径读取所述终端的屏幕数据,其中,Framebuffer的存储路径为“/dev/graphics/fb0”。
可以理解的是,所述Framebuffer中的信息包括:所述终端屏幕对应的原始的屏幕数据、所述终端屏幕x、y分辨率(xRes,yRes)、Framebuffer本身缓存设置的行宽度(即每行像素点line_length)、每个像素点的位数、红绿蓝RGB颜色对于像素点的位移(red.offset、green.offset、blue.offset)以及RGB颜色对于像素点的位宽(red.length、green.length、blue.length)等。其中,所述终端屏幕对应的原始的屏幕数据具体是指接收到输入指令时,当前终端屏幕对应的原始的屏幕数据。
其中,依照Framebuffer存储路径读取所述终端的屏幕数据,是指,从所述Framebuffer中读取所述终端的屏幕数据,具体地可以为,根据所述Framebuffer中的所述终端屏幕x、y分辨率、Framebuffer本身缓存设置的行宽度、每个像素点的位数、红绿蓝RGB颜色对于像素点的位移以及RGB颜色对于像素点的位宽等Framebuffer信息的设置,从所述Framebuffer中读取所述终端的屏幕数据。
在步骤S404中,对读取的所述屏幕数据进行RGB通道排序修正处理,生成修正后的屏幕数据。
可以理解的是,在依照Framebuffer存储路径读取所述终端的屏幕数据的过程中,对读取的所述屏幕数据进行修正处理,以避免采用读取的屏幕数据而压缩的图片产生失真,如,避免由于屏幕图片RGB通道混乱而造成的红屏现象。
优选的,由于在Framebuffer中,正常情况下的RGB通道分布从高到低为BGR,如果不是这个顺序,则屏幕截图后的图片会出现红屏等失真现象。基于这种情况,对所述RGB通道顺序进行检测和调整,可具体的:
若检测到依照所述Framebuffer存储路径所读取的屏幕数据,其当前的RGB通道顺序不是BGR排列,则将所述RGB通道顺序调整为BGR排列,生成RGB通道排序修正后的屏幕数据;以及
将所述RGB通道排序修正后的屏幕数据作为修正后的屏幕数据。
可以理解的是,若检测到当前设置的RGB通道排列错误,即不是BGR排列,则将原始屏幕数据进行位移操作,将RGB的通道顺序重新排序为正确顺序BGR,假如是在像素位数为32位的情况下,具体操作是将R通道位移到0~7位,G通道位移到8~15位,B通道位移到16~23位。
在步骤S405中,对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
将经读取输出的所述终端屏幕对应的原始的屏幕数据,修正后进行压缩处理,以生成与所述屏幕数据对应的屏幕截图。
优选地,调用预设的图片处理数据库,并根据预设的压缩图片的尺寸和预设的压缩图片的质量对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图并保存。
可以理解的是,所述图片处理数据库可以预先设置在所述终端中,其中,所述图片处理数据库可以优选为libjpeg/libpng数据库;所述压缩图片的尺寸以及所述压缩图片的质量可以预先设置在所述终端中,也可以根据当前具体场景,由终端用户自定义设置,此处不作具体限定。
需要说明的是,所述Framebuffer中的提供的信息可以根据现有进行具体确定,实施例中仅为举例而列举一部分信息,另外,从所述Framebuffer读取屏幕数据的过程,可以根据现有技术进行实现,此处不作具体描述。
由上述可知,本实施例提供的基于Android系统的屏幕截图方法应用于安装Android系统的终端,本实施例获取终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较,若所述版本信息为4.0以上且所述终端中存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据,将屏幕数据压缩保存为本地图片。本发明实施例中,通过对终端的版本信息和存储路径信息进行分析,保证优先从Screencap读取数据,保证生成的截屏图片不失真。进一步的,对于版本信息不在4.0以上的情况,通过RGB通道排序修正的方式,解决从Framebuffer读取数据而导致截屏图片存在失真的问题;进一步的,通过对屏幕数据进行压缩以提高整个截图过程的效率。
请参阅图5,图5是本发明第四实施例提供的基于Android系统的屏幕截图方法的流程示意图。
在该实施例中,终端根据版本信息和存储路径信息,确定出所述终端依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。即所述终端的版本信息不在所述终端的预设版本以上,或者,所述终端不存在Screencap存储路径,其中所述预设版本为Android系统4.0以上版本。
其中,区别于第三实施例,不同的是依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据后,对屏幕数据的修正处理不一样,所述方法包括:
在步骤S501中,接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图。
在步骤S502中,获取所述终端的版本信息和存储路径信息。
在步骤S503中,根据所述终端的版本信息和存储路径信息,确定依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。
可以理解的是,所述步骤S501至步骤S503可以参考上述第三实施例的步骤S401至步骤S403的相关描述进行具体实现,此处不再赘述。
在步骤S504中,对读取的所述屏幕数据进行行像素修正处理,生成修正后的屏幕数据。
可以理解的是,在依照Framebuffer存储路径读取所述终端的屏幕数据的过程中,对读取的所述屏幕数据进行修正处理,以避免采用读取的屏幕数据而压缩的图片产生失真,如,避免由于屏幕图片像素点排列混乱而造成的花屏现象。
优选的,由于在Framebuffer中,其本身设置的行像素和终端实际的行像素不一致,导致屏幕图片像素点排列混乱,屏幕截图后的图片会出现花屏等失真现象。基于这种情况,对实际读取的行像素进行检测和调整,可具体的:
若检测到依照所述Framebuffer存储路径读取所述屏幕数据时,获取的行像素宽度不等于所述终端的屏幕的x分辨率,则以所述Framebuffer存储路径的行像素宽度作为实际行宽度读取所述屏幕数据,生成行像素修正后的屏幕数据;以及
将所述行像素修正后的屏幕数据作为修正后的屏幕数据。
可以理解的是,在获取Framebuffer的信息时,若检测到Framebuffer的行像素宽度不等于所述终端的屏幕的x分辨率,则采用Framebuffer(即fb0)的行像素宽度作为实际的行宽度来获取原始屏幕数据的行数据,以避免采用终端的x分辨率来获取行数据而出现花屏现象的问题。
在步骤S505中,对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
可以理解的是,所述步骤S505可以参考上述第三实施例的步骤S405的相关描述进行具体实现,此处不再赘述。
需要说明的是,从所述Framebuffer读取屏幕数据的过程,可以根据现有技术进行实现,此处不作具体描述。
由上述可知,本实施例提供的基于Android系统的屏幕截图方法应用于安装Android系统的终端,本实施例获取终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较,若所述版本信息为4.0以上且所述终端中存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据,将屏幕数据压缩保存为本地图片。本发明实施例中,通过对终端的版本信息和存储路径信息进行分析,保证优先从Screencap读取数据,保证生成的截屏图片不失真。进一步的,对于版本信息不在4.0以上的情况,通过行像素修正的方式,解决从Framebuffer读取数据而导致截屏图片存在失真的问题;进一步的,通过对屏幕数据进行压缩以提高整个截图过程的效率。
请参阅图6,图6是本发明第五实施例提供的基于Android系统的屏幕截图方法的流程示意图。
在该实施例中,终端根据版本信息和存储路径信息,确定出所述终端依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。即所述终端的版本信息不在所述终端的预设版本以上,或者,所述终端不存在Screencap存储路径,其中所述预设版本为Android系统4.0以上版本。
其中,区别于第三实施例和第四实施例,不同的是依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据后,对屏幕数据的修正处理不一样,所述方法包括:
在步骤S601中,接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图。
在步骤S602中,获取所述终端的版本信息和存储路径信息。
在步骤S603中,根据所述终端的版本信息和存储路径信息,确定依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。
可以理解的是,所述步骤S601至步骤S603可以参考上述第三实施例的步骤S401至步骤S403的相关描述进行具体实现,此处不再赘述。
在步骤S604中,对读取的所述屏幕数据进行RGB通道排序修正和行像素修正处理,生成修正后的屏幕数据。
可以理解的是,在依照Framebuffer存储路径读取所述终端的屏幕数据的过程中,对读取的所述屏幕数据进行修正处理,以避免采用读取的屏幕数据而压缩的图片产生失真,如,避免由于屏幕图片RGB通道混乱而造成的红屏现象以及由于屏幕图片像素点排列混乱而造成的花屏现象。
优选的,由于在Framebuffer中,第一,正常情况下的RGB通道分布从高到低为BGR,如果不是这个顺序,则屏幕截图后的图片会出现红屏等失真现象。第二,Framebuffer本身设置的行像素和终端实际的行像素不一致,导致屏幕图片像素点排列混乱,屏幕截图后的图片会出现花屏等失真现象。基于这两种情况,对RGB通道顺序和实际读取的行像素进行检测和调整,可具体的:
若检测到依照所述Framebuffer存储路径所读取的屏幕数据,其当前的红绿蓝RGB通道顺序不是BGR排列,则将所述RGB通道顺序调整为BGR排列;
若检测到依照所述Framebuffer存储路径读取所述屏幕数据时,获取的行像素宽度不等于所述终端的屏幕的x分辨率,则以所述Framebuffer存储路径的行像素宽度作为实际行宽度读取所述屏幕数据;
将经过RGB通道排序修正和行像素修正后的屏幕数据作为修正后的屏幕数据。
在步骤S605中,对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
可以理解的是,所述步骤S605可以参考上述第三实施例的步骤S405的相关描述进行具体实现,此处不再赘述。
需要说明的是,从所述Framebuffer读取屏幕数据的过程,可以根据现有技术进行实现,此处不作具体描述。
由上述可知,本实施例提供的基于Android系统的屏幕截图方法应用于安装Android系统的终端,本实施例获取终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较,若所述版本信息在所述预设版本以上且所述终端中存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据,将屏幕数据压缩保存为本地图片。本发明实施例中,通过对终端的版本信息和存储路径信息进行分析,保证优先从Screencap读取数据,保证生成的截屏图片不失真。进一步的,对于版本信息不在预设版本以上的情况,通过RGB通道排序修正和行像素修正的方式,解决从Framebuffer读取数据而导致截屏图片存在失真的问题;进一步的,通过对屏幕数据进行压缩以提高整个截图过程的效率。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见相关实施例中的详细描述,此处不再赘述。
为便于更好的实施本发明实施例提供的基于Android系统的屏幕截图方法,本发明实施例还提供一种基于所述屏幕截图方法的安装Android系统的终端。其中名词的含义与上述基于Android系统的屏幕截图方法中相同,具体实现细节可以参考方法实施例中的说明。请参阅图7,图7为本发明实施例提供的安装Android系统的终端的结构示意图,其中所述终端包括接收模块71、获取模块72、判断模块73、第一读取模块74以及压缩生成模块75。
其中所述接收模块71接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图;所述获取模块72,获取所述终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较。
所述终端可以包括平板PC、个人数字助理、连网板、可携式电话等具备储存单元并安装有微处理器而具有运算能力的终端机。所述终端的版本信息具体指安装的Android系统的版本号信息,所述终端的存储路径信息具体是指所述终端内存在有哪些存储路径。
本发明实施例中所述存储路径包括屏幕截图Screencap存储路径和帧缓冲Framebuffer存储路径,其中,在Android系统中,Screencap的存储路径为“/system/bin/screencap”,Framebuffer的存储路径为“/dev/graphics/fb0”。
所述判断模块73若所述版本信息在所述预设版本以上,则进一步判断所述终端是否存在屏幕截图Screencap存储路径;所述第一读取模块74若存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据;所述压缩生成模块75对获取的所述屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
可以理解的是,所述Screencap中的信息包括:所述终端屏幕对应的原始的屏幕数据、所述终端屏幕x、y分辨率(xRes,yRes)、每个像素点的位数(bits_per_pixel)、红绿蓝RGB颜色对于像素点的位移(red.offset、green.offset、blue.offset)以及RGB颜色对于像素点的位宽(red.length、green.length、blue.length)等。其中,所述终端屏幕对应的原始的屏幕数据具体是指接收到输入指令时,当前终端屏幕对应的原始的屏幕数据。
其中,依照所述Screencap存储路径读取所述终端的屏幕数据,是指,从所述Screencap中读取所述终端的屏幕数据,具体地可以为,根据所述Screencap中的所述终端屏幕x、y分辨率、每个像素点的位数、红绿蓝RGB颜色对于像素点的位移以及RGB颜色对于像素点的位宽等Screencap信息的设置,从所述Screencap中读取所述终端的屏幕数据。将原始的屏幕数据进行压缩处理,以生成与所述屏幕数据对应的屏幕截图。其中,通过screencap读取最终生成的屏幕截图可保存为PNG格式文件或RGBRAW文件。
由上述可知,本实施例提供的安装Android系统的终端,获取终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较,若所述版本信息在所述预设版本以上且所述终端中存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据,将屏幕数据压缩保存为本地图片。本发明实施例中,通过对终端的版本信息和存储路径信息进行分析,保证优先从Screencap读取数据,保证生成的截屏图片不失真。进一步的,通过对屏幕数据进行压缩以提高整个截图过程的效率。
可一并参考图8,图8为本发明实施例提供的安装Android系统的终端的另一结构示意图,其中所述终端包括接收模块81、获取模块82、判断模块83、第一读取模块84、第二读取模块85、第三读取模块86、压缩生成模块87以及修正模块88。
其中所述接收模块81接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图;所述获取模块82,获取所述终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较。
本发明实施例中所述存储路径包括屏幕截图Screencap存储路径和帧缓冲Framebuffer存储路径,其中,在Android系统中,Screencap的存储路径为“/system/bin/screencap”,Framebuffer的存储路径为“/dev/graphics/fb0”。
可以理解的是,所述预设版本可以预先设置在所述终端中,本实施例中,所述预设版本为Android系统4.0。
在一种情况下,所述判断模块83若所述版本信息在所述预设版本以上,则进一步判断所述终端是否存在屏幕截图Screencap存储路径;
所述第一读取模块84若存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据。
一般来说,Android4.0以上的系统是自带Screencap以实现截图,但是由于Android系统会存在碎片化的问题,也就是各个不同型号的终端的设置可能会不一样,因此,在确认为Android系统4.0以上之后,所述判断模块83还需要进一步判断所述终端是否存在屏幕截图Screencap存储路径。
可以理解的是,所述Screencap中的信息包括:所述终端屏幕对应的原始的屏幕数据、所述终端屏幕x、y分辨率(xRes,yRes)、每个像素点的位数(bits_per_pixel)、红绿蓝RGB颜色对于像素点的位移(red.offset、green.offset、blue.offset)以及RGB颜色对于像素点的位宽(red.length、green.length、blue.length)等。其中,所述终端屏幕对应的原始的屏幕数据具体是指接收到输入指令时,当前终端屏幕对应的原始的屏幕数据。
其中,依照所述Screencap存储路径读取所述终端的屏幕数据,是指,从所述Screencap中读取所述终端的屏幕数据,具体地可以为,根据所述Screencap中的所述终端屏幕x、y分辨率、每个像素点的位数、红绿蓝RGB颜色对于像素点的位移以及RGB颜色对于像素点的位宽等Screencap信息的设置,从所述Screencap中读取所述终端的屏幕数据。
则在该情况下,所述压缩生成模块87对获取的所述屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
在另一种情况下,所述第二读取模块85若所述版本信息不在所述预设版本以上,则依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。或者,所述第三读取模块86若不存在Screencap存储路径,则依照Framebuffer存储路径读取所述终端的屏幕数据。
可以理解的是,所述Framebuffer中的信息包括:所述终端屏幕对应的原始的屏幕数据、所述终端屏幕x、y分辨率(xRes,yRes)、Framebuffer本身缓存设置的行宽度(即每行像素点line_length)、每个像素点的位数(bits_per_pixel)、红绿蓝RGB颜色对于像素点的位移(red.offset、green.offset、blue.offset)以及RGB颜色对于像素点的位宽(red.length、green.length、blue.length)等。其中,所述终端屏幕对应的原始的屏幕数据具体是指接收到输入指令时,当前终端屏幕对应的原始的屏幕数据。
其中,依照Framebuffer存储路径读取所述终端的屏幕数据,是指,从所述Framebuffer中读取所述终端的屏幕数据,具体地可以为,根据所述Framebuffer中的所述终端屏幕x、y分辨率、Framebuffer本身缓存设置的行宽度、每个像素点的位数、红绿蓝RGB颜色对于像素点的位移以及RGB颜色对于像素点的位宽等Framebuffer信息的设置,从所述Framebuffer中读取所述终端的屏幕数据。
优选的,在依照Framebuffer存储路径读取所述终端的屏幕数据的过程中,以避免采用读取的屏幕数据而压缩的图片产生失真,所述终端还可以包括:
修正模块88在依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据后,对读取的所述屏幕数据进行修正处理,生成修正后的屏幕数据。
进一步的,在一种实施方式中,所述修正模块88可以包括第一修正单元和第一控制单元,其中,所述第一修正单元若检测到依照所述Framebuffer存储路径所读取的屏幕数据,其当前的红绿蓝RGB通道顺序不是BGR排列,则将所述RGB通道顺序调整为BGR排列,生成RGB通道排序修正后的屏幕数据;所述第一控制单元将所述RGB通道排序修正后的屏幕数据作为修正后的屏幕数据。
可以理解的是,由于在Framebuffer中,正常情况下的RGB通道分布从高到低为BGR,如果不是这个顺序,则屏幕截图后的图片会出现红屏等失真现象。基于这种情况,若检测到当前设置的RGB通道排列错误,即不是BGR排列,则将原始屏幕数据进行位移操作,将RGB的通道顺序重新排序为正确顺序BGR,假如是在像素位数为32位的情况下,具体操作是将R通道位移到0~7位,G通道位移到8~15位,B通道位移到16~23位。从而避免由于屏幕图片RGB通道混乱而造成的红屏现象
进一步的,在另一实施方式中,所述修正模块88可以包括第二修正单元和第二控制单元,其中所述第二修正单元若检测到依照所述Framebuffer存储路径读取所述屏幕数据时,获取的行像素宽度不等于所述终端的屏幕的x分辨率,则以所述Framebuffer存储路径的行像素宽度作为实际行宽度读取所述屏幕数据,生成行像素修正后的屏幕数据;所述第二控制单元将所述行像素修正后的屏幕数据作为修正后的屏幕数据。
可以理解的是,在Framebuffer中,其本身设置的行像素和终端实际的行像素不一致,导致屏幕图片像素点排列混乱,屏幕截图后的图片会出现花屏等失真现象。基于这种情况,在获取Framebuffer的信息时,若检测到Framebuffer的行像素宽度不等于所述终端的屏幕的x分辨率,则采用Framebuffer(即fb0)的行像素宽度作为实际的行宽度来获取原始屏幕数据的行数据,以避免采用终端的x分辨率来获取行数据而出现花屏现象的问题。
进一步的,在另一实施方式中,所述修正模块88可以包括第三修正单元、第四修正单元以及第三控制单元,其中所述第三修正单元若检测到依照所述Framebuffer存储路径所读取的屏幕数据,其当前的红绿蓝RGB通道顺序不是BGR排列,则将所述RGB通道顺序调整为BGR排列;所述第四修正单元若检测到依照所述Framebuffer存储路径读取所述屏幕数据时,获取的行像素宽度不等于所述终端的屏幕的x分辨率,则以所述Framebuffer存储路径的行像素宽度作为实际行宽度读取所述屏幕数据;所述第三控制单元,用于将经过RGB通道排序修正和行像素修正后的屏幕数据作为修正后的屏幕数据。
可以理解的是,该实施方式中,对RGB通道顺序和实际读取的行像素一并进行检测和调整,以避免屏幕截图后的图片会出现红屏和花屏现象。
则该情况下,所述压缩生成模块87对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
优选的,所述压缩生成模块87调用预设的图片处理数据库,并根据预设的压缩图片的尺寸和预设的压缩图片的质量对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图并保存。
可以理解的是,所述图片处理数据库可以预先设置在所述终端中,其中,所述图片处理数据库可以优选为libjpeg/libpng数据库;所述压缩图片的尺寸以及所述压缩图片的质量可以预先设置在所述终端中,也可以根据当前具体场景,由终端用户自定义设置,此处不作具体限定。
由上述可知,本实施例提供的安装Android系统的终端,获取终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较,若所述版本信息在所述预设版本以上且所述终端中存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据,将屏幕数据压缩保存为本地图片。本发明实施例中,通过对终端的版本信息和存储路径信息进行分析,保证优先从Screencap读取数据,保证生成的截屏图片不失真。进一步的,对于版本信息不在预设版本以上的情况,通过RGB通道排序修正和行像素修正的方式,解决从Framebuffer读取数据而导致截屏图片存在失真的问题;进一步的,通过对屏幕数据进行压缩以提高整个截图过程的效率。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对基于Android系统的屏幕截图方法的详细描述,此处不再赘述。
本发明实施例提供的所述安装Android系统的终端,譬如为计算机、平板电脑、具有触摸功能的手机等等,所述安装Android系统的终端与上文实施例中的基于Android系统的屏幕截图方法属于同一构思,在所述安装Android系统的终端上可以运行所述基于Android系统的屏幕截图方法实施例中提供的任一方法,其具体实现过程详见所述基于Android系统的屏幕截图方法实施例,此处不再赘述。
需要说明的是,对本发明所述基于Android系统的屏幕截图方法而言,本领域普通测试人员可以理解实现本发明实施例所述基于Android系统的屏幕截图方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,所述计算机程序可存储于一计算机可读取存储介质中,如存储在终端的存储器中,并被该终端内的至少一个处理器执行,在执行过程中可包括如所述驾驶数据处理方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。
对本发明实施例的所述安装Android系统的终端而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,所述存储介质譬如为只读存储器,磁盘或光盘等。
综上所述,虽然本发明已以优选实施例揭露如上,但上述优选实施例并非用以限制本发明,本领域的普通测试人员,在不脱离本发明的精神和范围内,均可作各种更动与润饰,因此本发明的保护范围以权利要求界定的范围为准。

Claims (16)

1.一种基于Android系统的屏幕截图方法,其特征在于,所述方法包括:
接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图;
获取所述终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较;
若所述版本信息在所述预设版本以上,则进一步判断所述终端是否存在屏幕截图Screencap存储路径;若存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据;以及
对获取的所述屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
2.根据权利要求1所述的基于Android系统的屏幕截图方法,其特征在于,所述将所述版本信息与预设版本进行比较的步骤之后,还包括:
若所述版本信息不在所述预设版本以上,则依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。
3.根据权利要求1所述的基于Android系统的屏幕截图方法,其特征在于,所述判断所述终端是否存在屏幕截图Screencap存储路径的步骤之后,还包括:
若不存在Screencap存储路径,则依照Framebuffer存储路径读取所述终端的屏幕数据。
4.根据权利要求2或3所述的基于Android系统的屏幕截图方法,其特征在于,所述依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据的步骤之后,还包括:
对读取的所述屏幕数据进行修正处理,生成修正后的屏幕数据;
则所述对获取的所述屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图的步骤包括:
对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
5.根据权利要求4所述的基于Android系统的屏幕截图方法,其特征在于,所述对读取的所述屏幕数据进行修正处理,生成修正后的屏幕数据的步骤,包括:
若检测到依照所述Framebuffer存储路径所读取的屏幕数据,其当前的红绿蓝通道顺序不是以蓝绿红的顺序排列,则将所述红绿蓝通道顺序调整为以蓝绿红的顺序排列,生成红绿蓝通道排序修正后的屏幕数据;以及
将所述红绿蓝通道排序修正后的屏幕数据作为修正后的屏幕数据。
6.根据权利要求4所述的基于Android系统的屏幕截图方法,其特征在于,所述对读取的所述屏幕数据进行修正处理,生成修正后的屏幕数据的步骤,包括:
若检测到依照所述Framebuffer存储路径读取所述屏幕数据时,获取的行像素宽度不等于所述终端的屏幕的x分辨率,则以所述Framebuffer存储路径的行像素宽度作为实际行宽度读取所述屏幕数据,生成行像素修正后的屏幕数据;以及
将所述行像素修正后的屏幕数据作为修正后的屏幕数据。
7.根据权利要求4所述的基于Android系统的屏幕截图方法,其特征在于,所述对读取到的所述屏幕数据进行失真修正处理,生成修正后的屏幕数据的步骤,包括:
若检测到依照所述Framebuffer存储路径所读取的屏幕数据,其当前的红绿蓝通道顺序不是以蓝绿红的顺序排列,则将所述红绿蓝通道顺序调整为以蓝绿红的顺序排列;
若检测到依照所述Framebuffer存储路径读取所述屏幕数据时,获取的行像素宽度不等于所述终端的屏幕的x分辨率,则以所述Framebuffer存储路径的行像素宽度作为实际行宽度读取所述屏幕数据;
将经过红绿蓝通道排序修正和行像素修正后的屏幕数据作为修正后的屏幕数据。
8.根据权利要求4所述的基于Android系统的屏幕截图方法,其特征在于,所述对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图的步骤,包括:
调用预设的图片处理数据库,并根据预设的压缩图片的尺寸和预设的压缩图片的质量对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图并保存。
9.一种安装Android系统的终端,其特征在于,所述终端包括:
接收模块,用于接收输入指令,所述输入指令用于向安装Android系统的终端请求屏幕截图;
获取模块,用于获取所述终端的版本信息和存储路径信息,并将所述版本信息与预设版本进行比较;
判断模块,用于若所述版本信息在所述预设版本以上,则进一步判断所述终端是否存在屏幕截图Screencap存储路径;
第一读取模块,用于若存在Screencap存储路径,则依照所述Screencap存储路径读取所述终端的屏幕数据;以及
压缩生成模块,用于对获取的所述屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
10.根据权利要求9所述的安装Android系统的终端,其特征在于,所述终端还包括:
第二读取模块,用于若所述版本信息不在所述预设版本以上,则依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据。
11.根据权利要求9所述的安装Android系统的终端,其特征在于,所述终端还包括:
第三读取模块,用于若不存在Screencap存储路径,则依照Framebuffer存储路径读取所述终端的屏幕数据。
12.根据权利要求10或11所述的安装Android系统的终端,其特征在于,所述终端还包括:
修正模块,用于在依照帧缓冲Framebuffer存储路径读取所述终端的屏幕数据后,对读取的所述屏幕数据进行修正处理,生成修正后的屏幕数据;
则所述压缩生成模块,还用于对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图。
13.根据权利要求12所述的安装Android系统的终端,其特征在于,所述修正模块包括:
第一修正单元,用于若检测到依照所述Framebuffer存储路径所读取的屏幕数据,其当前的红绿蓝通道顺序不是以蓝绿红的顺序排列,则将所述红绿蓝通道顺序调整为以蓝绿红的顺序排列,生成红绿蓝通道排序修正后的屏幕数据;以及
第一控制单元,用于将所述RGB通道排序修正后的屏幕数据作为修正后的屏幕数据。
14.根据权利要求12所述的安装Android系统的终端,其特征在于,所述修正模块包括:
第二修正单元,用于若检测到依照所述Framebuffer存储路径读取所述屏幕数据时,获取的行像素宽度不等于所述终端的屏幕的x分辨率,则以所述Framebuffer存储路径的行像素宽度作为实际行宽度读取所述屏幕数据,生成行像素修正后的屏幕数据;以及
第二控制单元,用于将所述行像素修正后的屏幕数据作为修正后的屏幕数据。
15.根据权利要求12所述的安装Android系统的终端,其特征在于,所述修正模块包括:
第三修正单元,用于若检测到依照所述Framebuffer存储路径所读取的屏幕数据,其当前的红绿蓝通道顺序不是以蓝绿红的顺序排列,则将所述红绿蓝通道顺序调整为以蓝绿红的顺序排列;
第四修正单元,用于若检测到依照所述Framebuffer存储路径读取所述屏幕数据时,获取的行像素宽度不等于所述终端的屏幕的x分辨率,则以所述Framebuffer存储路径的行像素宽度作为实际行宽度读取所述屏幕数据;
第三控制单元,用于将经过红绿蓝通道排序修正和行像素修正后的屏幕数据作为修正后的屏幕数据。
16.根据权利要求12所述的安装Android系统的终端,其特征在于,所述压缩生成模块用于调用预设的图片处理数据库,并根据预设的压缩图片的尺寸和预设的压缩图片的质量对所述修正后的屏幕数据进行压缩,生成所述屏幕数据对应的屏幕截图并保存。
CN201410326427.0A 2014-07-09 2014-07-09 基于Android系统的屏幕截图方法及终端 Active CN105279006B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410326427.0A CN105279006B (zh) 2014-07-09 2014-07-09 基于Android系统的屏幕截图方法及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410326427.0A CN105279006B (zh) 2014-07-09 2014-07-09 基于Android系统的屏幕截图方法及终端

Publications (2)

Publication Number Publication Date
CN105279006A true CN105279006A (zh) 2016-01-27
CN105279006B CN105279006B (zh) 2019-12-17

Family

ID=55148061

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410326427.0A Active CN105279006B (zh) 2014-07-09 2014-07-09 基于Android系统的屏幕截图方法及终端

Country Status (1)

Country Link
CN (1) CN105279006B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107197088A (zh) * 2017-05-16 2017-09-22 网易(杭州)网络有限公司 基于安卓移动设备的截图方法与装置
CN107239208A (zh) * 2017-05-27 2017-10-10 努比亚技术有限公司 处理屏幕截图的方法、设备及计算机可读存储介质
CN107273223A (zh) * 2017-06-13 2017-10-20 青岛海信电器股份有限公司 驱动层到应用层之间的图像数据传输方法及装置、终端
WO2018126698A1 (zh) * 2017-01-09 2018-07-12 京东方科技集团股份有限公司 非标准分辨率数据显示方法以及设备
CN108347452A (zh) * 2017-01-23 2018-07-31 腾讯科技(深圳)有限公司 远程获取屏幕截图的方法及装置
CN108388461A (zh) * 2018-02-27 2018-08-10 山东超越数控电子股份有限公司 一种用于固件的屏幕图像截取方法与装置
CN109302637A (zh) * 2018-11-05 2019-02-01 腾讯科技(成都)有限公司 图像处理方法、图像处理装置和电子设备
CN110187205A (zh) * 2019-05-20 2019-08-30 广州朗国电子科技有限公司 屏幕运行状态检测方法、装置及数字标牌

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070222791A1 (en) * 2001-02-01 2007-09-27 Eric Graves Adjustment of color values for optimized image processing
CN103442071A (zh) * 2013-08-30 2013-12-11 华南理工大学 一种手机屏幕内容的实时分享方法
CN103513947A (zh) * 2012-06-25 2014-01-15 联想(北京)有限公司 信息处理的方法及信息处理系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070222791A1 (en) * 2001-02-01 2007-09-27 Eric Graves Adjustment of color values for optimized image processing
US8125497B2 (en) * 2001-02-01 2012-02-28 Apple Inc. Adjustment of color values for optimized image processing
CN103513947A (zh) * 2012-06-25 2014-01-15 联想(北京)有限公司 信息处理的方法及信息处理系统
CN103442071A (zh) * 2013-08-30 2013-12-11 华南理工大学 一种手机屏幕内容的实时分享方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SOFTSPIDER: ""[转载]Android截屏浅析"", 《新浪博客》 *
TOPGUN38: ""Android读取framebuffer截屏"", 《CSDN》 *
无: ""android图片压缩的3种方法实例"", 《脚本之家》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018126698A1 (zh) * 2017-01-09 2018-07-12 京东方科技集团股份有限公司 非标准分辨率数据显示方法以及设备
US10923072B2 (en) 2017-01-09 2021-02-16 Boe Technology Group Co., Ltd. Method and device for displaying non-standard resolution data
CN108347452A (zh) * 2017-01-23 2018-07-31 腾讯科技(深圳)有限公司 远程获取屏幕截图的方法及装置
CN107197088A (zh) * 2017-05-16 2017-09-22 网易(杭州)网络有限公司 基于安卓移动设备的截图方法与装置
CN107197088B (zh) * 2017-05-16 2020-09-25 网易(杭州)网络有限公司 基于安卓移动设备的截图方法与装置
CN107239208A (zh) * 2017-05-27 2017-10-10 努比亚技术有限公司 处理屏幕截图的方法、设备及计算机可读存储介质
CN107273223A (zh) * 2017-06-13 2017-10-20 青岛海信电器股份有限公司 驱动层到应用层之间的图像数据传输方法及装置、终端
CN108388461A (zh) * 2018-02-27 2018-08-10 山东超越数控电子股份有限公司 一种用于固件的屏幕图像截取方法与装置
CN109302637A (zh) * 2018-11-05 2019-02-01 腾讯科技(成都)有限公司 图像处理方法、图像处理装置和电子设备
CN110187205A (zh) * 2019-05-20 2019-08-30 广州朗国电子科技有限公司 屏幕运行状态检测方法、装置及数字标牌

Also Published As

Publication number Publication date
CN105279006B (zh) 2019-12-17

Similar Documents

Publication Publication Date Title
CN105279006A (zh) 基于Android系统的屏幕截图方法及终端
US10977761B2 (en) Digital watermark embedding method and extraction method, digital watermark embedding apparatus and extraction apparatus, and digital watermark system
CN112765271B (zh) 区块链交易索引的存储方法、装置、计算机设备及介质
US7545386B2 (en) Unified mobile display emulator
US10191838B2 (en) Method and device for checking influence of deleting cache file, and mobile terminal
WO2017219983A1 (zh) 终端间应用程序的获取方法及终端
CN104967635A (zh) 一种数据传输方法及装置
CN110139149B (zh) 一种视频优化的方法、装置、电子设备
CN104918119A (zh) 基于iOS浏览器的视频处理方法及视频处理装置
CN105320509A (zh) 图片处理方法及图片处理装置
CN109558331B (zh) 应用程序的缺陷检测方法、装置、设备和存储介质
CN107610047A (zh) 图像分块处理方法、装置及计算机可读存储介质
CN107301220B (zh) 数据驱动视图的方法、装置、设备及存储介质
US10318612B2 (en) System and method for implementing screen capture
CN103455544A (zh) 创建视频的缩略图像的方法以及显示该图像的电子装置
CN105279164A (zh) 一种基于ios系统的文件处理方法及装置
US10419380B2 (en) Electronic device and method for adjusting message log
CN111008934B (zh) 一种场景构建方法、装置、设备及存储介质
CN111046393B (zh) 漏洞信息上传方法、装置、终端设备及存储介质
CN111246214B (zh) 一种视频解码方法、装置
CN108616603B (zh) 一种内外网数据同步方法和系统
CN103677718A (zh) 一种拼接墙控制方法及终端
CN111352357B (zh) 机器人的控制方法、装置及终端设备
CN110413800B (zh) 一种提供小说信息的方法与设备
WO2021097624A1 (zh) 一种文件处理方法、文件处理装置及终端设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant