CN107515759A - 截屏方法、装置、电子设备及可读存储介质 - Google Patents
截屏方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN107515759A CN107515759A CN201710854618.8A CN201710854618A CN107515759A CN 107515759 A CN107515759 A CN 107515759A CN 201710854618 A CN201710854618 A CN 201710854618A CN 107515759 A CN107515759 A CN 107515759A
- Authority
- CN
- China
- Prior art keywords
- buffer area
- rendering
- data
- view data
- image reading
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明实施例提供一种截屏方法、装置、电子终端及可读存储介质。在一个实施例中,所述截屏方法包括:建立图像读取对象以实现初始化,该图像读取对象包括指向缓存区的指针对象;根据用户的截屏操作调用图形库***接口将当前屏幕对应的数据渲染,并将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中;启动一线程获取所述缓存区中的图像数据并进行存储。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种截屏方法、装置、电子设备及可读存储介质。
背景技术
目前安卓平台直播手游时,截取屏幕内容存在如下问题:在录屏过程中,由于录屏直播为对录屏数据按顺序逐帧进行渲染显示,直接拷贝录屏直播的显示数据以获取图片信息,会影响直播流畅度。
发明内容
有鉴于此,本发明实施例的目的在于提供一种截屏方法、装置、电子设备及可读存储介质。
本发明实施例提供的一种截屏方法,所述截屏方法包括:
建立图像读取对象以实现初始化,该图像读取对象包括指向缓存区的指针对象;
根据用户的截屏操作调用图形库***接口将当前屏幕对应的数据渲染,并将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中;
启动一线程获取所述缓存区中的图像数据并进行存储。
本发明实施例还提供一种截屏装置,所述截屏装置包括:
建立模块,用于建立图像读取对象以实现初始化,该图像读取对象包括一指向缓存区的指针对象;
渲染模块,用于根据用户的截屏操作调用图形库***接口将当前屏幕对应的数据渲染,并将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中;
存储模块,用于启动一线程获取所述缓存区中的图像数据并进行存储。
本发明实施例还提供一种电子设备,包括:
存储器;
处理器;
安装/存储于所述存储器并由所述处理器执行的上述的截屏装置。
本发明实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序在执行时实现上述的截屏方法。
与现有技术相比,本发明实施例的截屏方法、装置、电子设备及可读存储介质,通过调用图形库***接口直接渲染得到当前屏幕对应的数据,避免了直接读取或拷贝当前屏幕的原始数据信息,由于渲染动作由GPU操作,不会阻塞CPU,且可以新建线程中来获取缓存区中的图像数据,然后进行保存图片的相关操作,从而实现了不影响直播流畅度的后台截屏。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明较佳实施例提供的电子设备的方框示意图。
图2为本发明较佳实施例提供的截屏方法的流程图。
图3为本发明较佳实施例提供的截屏方法的步骤S101的详细流程图。
图4为本发明较佳实施例提供的截屏方法的步骤S102的详细流程图。
图5为本发明较佳实施例提供的截屏装置的功能模块示意图。
图6为本发明较佳实施例提供的截屏装置的建立模块包括的功能单元示意图。
图7为本发明较佳实施例提供的截屏装置的渲染模块包括的功能单元示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如图1所示,是一电子设备100的方框示意图。所述电子设备100包括截屏装置110、存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115、显示单元116。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对电子设备100的结构造成限定。例如,电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。本实施例所述的电子设备100可以是移动电子设备,所述移动电子设备中安装有Android***。
所述存储器111、存储控制器112、处理器113、外设接口114、输入输出单元115及显示单元116各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述截屏装置110包括至少一个可以软件或固件(Firmware)的形式存储于所述存储器111中或固化在所述电子设备100的操作***(Operating System,OS)中的软件功能模块。所述处理器113用于执行存储器中存储的可执行模块,例如所述截屏装置110包括的软件功能模块或计算机程序。
其中,所述存储器111可以是,但不限于,随机存取存储器(Random AccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(ProgrammableRead-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-OnlyMemory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-OnlyMemory,EEPROM)等。其中,存储器111用于存储程序,所述处理器113在接收到执行指令后,执行所述程序,本发明实施例任一实施例揭示的过程定义的电子设备100所执行的方法可以应用于处理器113中,或者由处理器113实现。
所述处理器113可能是一种集成电路芯片,具有信号的处理能力。上述的处理器113可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述外设接口114将各种输入/输入装置耦合至处理器113以及存储器111。在一些实施例中,外设接口114,处理器113以及存储控制器112可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
所述输入输出单元115用于提供给用户输入数据。所述输入输出单元115可以是,但不限于,鼠标和键盘等。
所述显示单元116在所述电子设备100与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器进行计算和处理。
由于安卓平台限制,电子设备的应用层无法直接获取图形程序接口(openGL)中的图像原始数据,需要调用glReadPixels读取或者备份原始数据信息,此操作为耗时操作,导致现有技术中安卓***的电子设备如果需要获取手游直播的截屏数据会影响直播的流畅性。
请参阅图2,是本发明较佳实施例提供的应用于图1所示的电子设备的截屏方法的流程图。下面将对图2所示的具体流程进行详细阐述。
步骤S101,建立图像读取对象以实现初始化,该图像读取对象包括指向缓存区的指针对象。
在一种实施方式中,所述截屏方法可用于安装有Android***的电子设备的后台截屏。所述图像读取对象可以是Android***中的ImageReader对象。
本实施例中,所述ImageReader对象中包括的指针对象可以是Surface,通过所述Surface可以访问所述Surface指向的缓存区。
本实施例中,在一种实施方式中,所述截屏方法应用于安装有Android***的电子设备,如图3所示,所述步骤S101可包括:步骤S1011-步骤S1016。
步骤S1011,基于Android***创建ImageReader对象作为所述图像读取对象。
步骤S1012,将所述第一格式或第二格式设置ImageReader对象的默认格式。
所述ImageReader对象的格式可能是RGBA_8888或RGBX_8888。
在一个实例中,所述第一格式可以是RGBA_8888,也可以是RGBX_8888。本实施例中,当第一格式为RGBA_8888,所述第二格式则为RGBX_8888。当第一格式为RGBX_8888,所述第二格式则为RGBA_8888。
本实施例中,可以将第一格式设置ImageReader对象的默认格式。例如,将RGBX_8888设置为所述ImageReader对象的默认格式。
步骤S1013,调用setOnImageAvailableListener接口设置回调。
本实施例中,该setOnImageAvailableListener接口用于监听是否有新的截屏数据,从而进行相关存储。当用户进行截屏操作时,将当前屏幕的数据渲染到ImageReader中,setOnImageAvailableListener接口的回调即可监听到,然后进行截屏保存。未进行截屏操作时,则无数据渲染动作,此setOnImageAvailableListener接口也无相关操作。
本实施例中,所述setOnImageAvailableListener接口可通过监听所述ImageReader对象的Surface指向的缓存区的数据更新与否判断是否有截屏数据。
步骤S1014,创建环境对象WindowSurface。
本实施例中,所述环境对象可以是EGL对象。所述EGL是OpenGL接口和底层Native平台视窗***之间的接口。
本实施例中,所述WindowSurface用于提供截屏操作的环境,以使截屏得到的数据输入指定缓存区中。
在一个实例中,由于需要将截屏数据输出到ImageReader对象的指针对象Surface中,所以创建所述WindowSurface所用的Surface需要使用ImageReader所包含的指针对象Surface对象。在一个实例中,该指针对象Surface通过GetSurface方法获取。
步骤S1015,创建渲染工具filter。
在一个实例中,创建所述渲染工具filter,在一个实例中,渲染工具filter可以是DYGLTextureScreenFilter。
在一个实例中,所述渲染工具filter用于将手游直播的屏幕数据渲染到所述ImageReader对象中。
步骤S1016,调用图形库***接口渲染一帧数据到所述指针对象指向的缓存区中。
本实施例中,所述图形库***接口可以是opengl(Open Graphics Library)接口是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。
步骤S1017,获取缓存区中渲染得到的图像数据。
步骤S1018,判断所述渲染得到的图像数据的格式是否为默认格式。
若不是默认格式,则返回重新执行步骤S1011至步骤S1015;其中,步骤S1012为将不同于该默认格式的另一中格式设置为ImageReader对象的重置的默认格式。
若是第一格式,则步骤S101的流程结束。
本实施例中,步骤S101为一个初始化的过程。其中,所述图形库***接口在渲染时可能会覆盖所述ImageReader对象的格式,导致渲染得到的图像数据与所述ImageReader对象的默认格式不同。为了使设置所述ImageReader对象的默认格式与图形库***接口在渲染得到的图像数据的格式相同,设置步骤S1016至S1018进行检测,避免渲染得到的图像数据的格式与默认格式不同导致获取渲染得到的图像数据时会直接报UnsupportedOperationException异常,从而提高截屏有效性。
步骤S102,根据用户的截屏操作调用图形库***接口将当前屏幕对应的数据渲染,并将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中。
本实施例中,如图4所示,所述步骤S102包括:步骤S1021和步骤S1022。
步骤S1021,调用一切换函数将所述图形库***接口的上下文环境切换至创建的WindowSurface所处环境中,调用所述图形库***接口将当前屏幕对应的数据渲染。
详细地,由于一个openGL上下文环境对应一个输出,在一个实例中,手游直播上行文环境对应的输出为编码器。因此,截屏进行图像保存前,切换所述图形库***接口的上下文环境。
在一种实施方式中,调用makeCurrent切换所述图形库***接口的上下文环境,将EGL上下文环境从手游直播openGL上下文环境,切换到创建的WindowSurface上下文环境。
在一种实施方式中,调用opengl接口的渲染工具filter进行的渲染。
步骤S1022,调用所述图形库***接口中的缓存交换函数将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中。
在一种实施方式中,所述交换函数可以是opengl接口的swapBuffers函数。通过调用opengl接口的swapBuffers函数将渲染得到的图像数据传递到ImageReader对象的指针对象指向的缓存区。其中,所述指针对象可以是所述Surface,所述Surface对应一个缓存区。
步骤S103,启动一线程获取所述缓存区中的图像数据并进行存储。
本实施例中,所述线程可以是在步骤S101之前通过start方法新线程。在一个实例中,所述步骤S101和S102的步骤在此线程中进行。
本实施例中,上述步骤S101中使用上述初始化的setOnImageAvailableListener接口监听所述缓存区的数据的更新,当所述缓存区有数据更新可以将更新得到的数据进行长期保存。
本实施例中,请再次参阅图2,在步骤S103之前,所述方法还包括:
步骤S104,依次从所述指针对象指向的缓存区获取所述图像数据每个像素点的RGBA值,并转换为ARGB值。
其中,若直接将缓存区中的图像数据保存为Bitmap(位图文件),可能为空白图片。
在一个实例中,所述缓存区中的图像数据的格式可以是PixelFormat.RGBA_8888。所述电子设备遍历所述图像数据中的每一个像素点,对每个像素点的RGBA值进行重新赋值,以转换为ARGB值。在一个实例中:依次从ImageReader对象的指针对象指向的缓存区获取RGBA值,转换为ARGB值,其中A值代表透明度,直接设置为不透明255。其中,R,G,B,A值在安卓中存储长度为一个字节,所述图像数据在所述缓存区的存储顺序为R,G,B,A,而Bitmap图像中的存储顺序为A,R,G,B。在一个实例中,可以设置变量offset为存储地址的偏移量,buffer为ImageReader对象的数据地址。本实例中可以调用方法buffer.get(offset)获取取ImageReader对象的指针对象指向的缓存区中的图像数据的R值;调用方法buffer.get(offset+1)获取ImageReader对象的指针对象指向的缓存区中的图像数据的G值;调用方法buffer.get(offset+2)获取ImageReader对象的指针对象指向的缓存区中的图像数据的B值;调用方法buffer.get(offset+3)获取ImageReader对象的指针对象指向的缓存区中的图像数据的A值。本实施例中,ImageReader对象的指针对象指向的缓存区中的图像数据的R值存储到Bitmap中的R值,需要向左偏移两位,即Bitmap中的R值为(buffer.get(offset)&0xff)<<16。依次类推,设置像素变量为pixel,可以得到每个值的计算方法如下:
pixel|=(buffer.get(offset)&0xff)<<16;//R
pixel|=(buffer.get(offset+1)&0xff)<<8;//G
pixel|=(buffer.get(offset+2)&0xff);//B
pixel|=(buffer.get(offset+3)|0xff)<<24;//A
本实施例中,与0xff进行或运算,即可设置A为255。
本发明实施例的截屏方法,通过调用图形库***接口直接渲染得到当前屏幕对应的数据,避免了直接读取或拷贝当前屏幕的原始数据信息,由于渲染动作由GPU操作,不会阻塞CPU,且可以新建线程中来获取缓存区中的图像数据,然后进行保存图片的相关操作,从而实现了不影响直播流畅度的后台截屏。
请参阅图5,是本发明较佳实施例提供的图1所示的截屏装置110的功能模块示意图。本实施例中的截屏装置110中的各个模块用于执行上述方法实施例中的各个步骤。所述截屏装置110包括建立模块1101、渲染模块1102及存储模块1103。
所述建立模块1101,用于建立图像读取对象以实现初始化,该图像读取对象包括指向缓存区的指针对象。
所述渲染模块1102,用于根据用户的截屏操作调用图形库***接口将当前屏幕对应的数据渲染,并将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中。
所述存储模块1103,用于启动一线程获取所述缓存区中的图像数据并进行存储。
本实施例中,如图6所示,所述建立模块1101包括:第一创建单元11011、设置单元11012、图像渲染单元11013、获取单元11014、判断单元11015、第二创建单元11016及第三创建单元11017。
所述第一创建单元11011,用于基于Android***创建ImageReader对象作为所述图像读取对象,所述ImageReader对象的格式包括第一格式和第二格式。
所述设置单元11012,用于将所述第一格式或第二格式设置ImageReader对象的默认格式。
所述回调单元11013,用于调用setOnImageAvailableListener接口设置回调。
所述第二创建单元11014,用于创建环境对象WindowSurface。
所述第三创建单元11015,用于创建渲染工具filter。
所述图像渲染单元11016,用于调用图形库***接口渲染一帧数据到ImageReader对象的指针对象指向的缓存区中。
所述获取单元11017,用于获取缓存区中渲染得到的图像数据。
所述判断单元11018,用于判断所述渲染得到的图像数据的格式是否为第一格式。
所述设置单元11012还用于当判断单元11018判断渲染得到的图像数据的格式不为默认格式时,将不同于该默认格式的另一中格式设置为ImageReader对象的重置的默认格式。
本实施例中,所述渲染模块还用于根据用户的截屏操作调用图形库***接口的渲染工具filter将当前屏幕对应的数据渲染,并将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中。
本实施例中,所述装置还包括:转换模块1104,用于依次从ImageReader对象的指针对象指向的缓存区获取所述图像数据每个像素点的RGBA值,并转换为ARGB值。
本实施例中,如图7所示,所述渲染模块1102包括:切换单元11021、屏幕图像渲染单元11022及传递单元11023。
所述切换单元11021,用于调用一切换函数将所述图形库***接口的上下文环境切换至创建的WindowSurface环境中。
所述屏幕图像渲染单元11022,用于调用所述图形库***接口将当前屏幕对应的数据渲染。
所述传递单元11023,用于调用所述图形库***接口中的缓存交换函数将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中。
关于本实施例的其它细节可以进一步地参考上述方法实施例中的描述,在此不再赘述。
本发明实施例的截屏装置,通过调用图形库***接口直接渲染得到当前屏幕对应的数据,避免了直接读取或拷贝当前屏幕的原始数据信息,由于渲染动作由GPU操作,不会阻塞CPU,且可以新建线程中来获取缓存区中的图像数据,然后进行保存图片的相关操作,从而实现了不影响直播流畅度的后台截屏。
本发明实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序在执行时实现上述实施例提供的截屏方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种截屏方法,其特征在于,所述截屏方法包括:
建立图像读取对象以实现初始化,该图像读取对象包括指向缓存区的指针对象;
根据用户的截屏操作调用图形库***接口将当前屏幕对应的数据渲染,并将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中;
启动一线程获取所述缓存区中的图像数据并进行存储。
2.如权利要求1所述的截屏方法,其特征在于,该截屏方法应用于安装有Android***的电子设备,所述建立图像读取对象以实现初始化,该图像读取对象包括指向缓存区的指针对象的步骤包括:
a.基于Android***创建ImageReader对象作为所述图像读取对象,所述ImageReader对象的格式包括第一格式和第二格式;
b.将所述第一格式或第二格式设置为ImageReader对象的默认格式;
c.调用setOnImageAvailableListener接口设置回调;
d.创建环境对象WindowSurface;
e.创建渲染工具,用于对截取的当前屏幕进行渲染;
f.调用图形库***接口的渲染工具渲染一帧数据到所述指针对象指向的缓存区中;
g.获取缓存区中渲染得到的图像数据;
h.判断所述渲染得到的图像数据的格式是否为所述默认格式;
若不是默认格式,则重新执行步骤a-e,其中,步骤b为将不同于该默认格式的另一种格式重置为ImageReader对象的默认格式。
3.如权利要求2所述的截屏方法,其特征在于,在启动一线程获取所述缓存区中的图像数据并进行存储的步骤之前,所述方法还包括:
依次从所述指针对象指向的缓存区获取所述图像数据每个像素点的RGBA值,并转换为ARGB值。
4.如权利要求2所述的截屏方法,其特征在于,所述根据用户的截屏操作调用图形库***接口将当前屏幕对应的数据渲染,并将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中的步骤包括:
调用一切换函数将所述图形库***接口的上下文环境切换至创建的WindowSurface环境中,调用所述图形库***接口将当前屏幕对应的数据渲染;
调用所述图形库***接口中的缓存交换函数将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中。
5.一种截屏装置,其特征在于,所述截屏装置包括:
建立模块,用于建立图像读取对象以实现初始化,该图像读取对象包括指向缓存区的指针对象;
渲染模块,用于根据用户的截屏操作调用图形库***接口将当前屏幕对应的数据渲染,并将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中;
存储模块,用于启动一线程获取所述缓存区中的图像数据并进行存储。
6.如权利要求5所述的截屏装置,其特征在于,所述建立模块包括:
第一创建单元,用于基于Android***创建ImageReader对象作为所述图像读取对象,所述ImageReader对象的格式包括第一格式和第二格式;
设置单元,用于将所述第一格式或第二格式设置为ImageReader对象的默认格式;
回调单元,用于调用setOnImageAvailableListener接口设置回调;
第二创建单元,用于创建环境对象WindowSurface;
第三创建单元,用于创建渲染工具,以用于供所述渲染模块对截取的当前屏幕进行渲染;
图像渲染单元,用于调用图形库***接口的渲染工具渲染一帧数据到ImageReader对象的指针对象指向的缓存区中;
获取单元,用于获取缓存区中渲染得到的图像数据;
判断单元,用于判断所述渲染得到的图像数据的格式是否为第一格式;
所述设置单元还用于当所述判断单元渲染得到的图像数据的格式不为第一格式时,将为将不同于该默认格式的另一中格式重置为ImageReader对象的默认格式。
7.如权利要求6所述的截屏装置,其特征在于,所述装置还包括:
转换模块,用于依次从ImageReader对象的指针对象指向的缓存区获取所述图像数据每个像素点的RGBA值,并转换为ARGB值。
8.如权利要求6所述的截屏装置,其特征在于,所述渲染模块包括:
切换单元,用于调用切换函数将所述图形库***接口的上下文环境切换至创建的WindowSurface环境中;
屏幕图像渲染单元,用于调用所述图形库***接口将当前屏幕对应的数据渲染;
传递单元,用于调用所述图形库***接口中的缓存交换函数将渲染得到的图像数据传递至所述图像读取对象的指针对象指向的缓存区中。
9.一种电子设备,其特征在于,包括:
存储器;
处理器;
安装/存储于所述存储器并由所述处理器执行的权利要求5-8任一项所述的截屏装置。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在执行时实现上述权利要求1-4中任意一项所述的截屏方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710854618.8A CN107515759B (zh) | 2017-09-20 | 2017-09-20 | 截屏方法、装置、电子设备及可读存储介质 |
PCT/CN2018/082937 WO2019056744A1 (zh) | 2017-09-20 | 2018-04-13 | 截屏方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710854618.8A CN107515759B (zh) | 2017-09-20 | 2017-09-20 | 截屏方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107515759A true CN107515759A (zh) | 2017-12-26 |
CN107515759B CN107515759B (zh) | 2020-08-04 |
Family
ID=60725875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710854618.8A Active CN107515759B (zh) | 2017-09-20 | 2017-09-20 | 截屏方法、装置、电子设备及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107515759B (zh) |
WO (1) | WO2019056744A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108388461A (zh) * | 2018-02-27 | 2018-08-10 | 山东超越数控电子股份有限公司 | 一种用于固件的屏幕图像截取方法与装置 |
CN108449625A (zh) * | 2018-01-30 | 2018-08-24 | 深圳市创梦天地科技股份有限公司 | 视频截图方法、装置及终端 |
CN109408497A (zh) * | 2018-09-20 | 2019-03-01 | 阿里巴巴集团控股有限公司 | 一种数据的渲染方法、装置及设备 |
WO2019056744A1 (zh) * | 2017-09-20 | 2019-03-28 | 武汉斗鱼网络科技有限公司 | 截屏方法、装置、电子设备及可读存储介质 |
CN109821236A (zh) * | 2019-01-18 | 2019-05-31 | 恒信东方文化股份有限公司 | 一种实时图像的提取方法 |
CN109857309A (zh) * | 2019-01-21 | 2019-06-07 | 武汉卡比特信息有限公司 | 一种基于iOS移动终端的屏幕截图投射方法 |
CN111405301A (zh) * | 2020-03-02 | 2020-07-10 | 广州虎牙科技有限公司 | 终端的录屏交互方法、装置、计算机设备及存储介质 |
CN112004041A (zh) * | 2019-05-27 | 2020-11-27 | 腾讯科技(深圳)有限公司 | 视频录制方法、装置、终端及存储介质 |
CN113784075A (zh) * | 2021-09-28 | 2021-12-10 | 统信软件技术有限公司 | 一种屏幕录像读取方法、***及计算设备 |
CN113794926A (zh) * | 2021-09-03 | 2021-12-14 | 深圳创维-Rgb电子有限公司 | 屏幕图像获取方法、装置和计算机可读存储介质 |
CN114579246A (zh) * | 2022-05-05 | 2022-06-03 | 北京麟卓信息科技有限公司 | 一种安卓兼容环境中多窗口模式下安卓应用的截屏方法 |
CN117687771A (zh) * | 2023-07-24 | 2024-03-12 | 荣耀终端有限公司 | 一种缓冲区分配方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080256508A1 (en) * | 2003-10-09 | 2008-10-16 | Einfalt, Ehf. | Hybrid Spreadsheet/Workflow Design and Execution Environment |
CN106131656A (zh) * | 2016-06-28 | 2016-11-16 | 武汉斗鱼网络科技有限公司 | 一种用于视频直播间准实时截图的***及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DK2828830T3 (en) * | 2012-03-20 | 2018-03-05 | Siemens Corp | Luggage visualization and virtual unpacking |
CN105427236A (zh) * | 2015-12-18 | 2016-03-23 | 魅族科技(中国)有限公司 | 一种图像渲染方法及装置 |
CN105933778A (zh) * | 2016-06-17 | 2016-09-07 | 北京奇虎科技有限公司 | 基于终端屏幕内容的直播方法及装置 |
CN107515759B (zh) * | 2017-09-20 | 2020-08-04 | 武汉斗鱼网络科技有限公司 | 截屏方法、装置、电子设备及可读存储介质 |
-
2017
- 2017-09-20 CN CN201710854618.8A patent/CN107515759B/zh active Active
-
2018
- 2018-04-13 WO PCT/CN2018/082937 patent/WO2019056744A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080256508A1 (en) * | 2003-10-09 | 2008-10-16 | Einfalt, Ehf. | Hybrid Spreadsheet/Workflow Design and Execution Environment |
CN106131656A (zh) * | 2016-06-28 | 2016-11-16 | 武汉斗鱼网络科技有限公司 | 一种用于视频直播间准实时截图的***及方法 |
Non-Patent Citations (2)
Title |
---|
WUHAOYU1990: "TextureMovieEncoder.java", 《HTTPS://GITHUB.COM/WUHAOYU1990/MAGICCAMERA/BLOB/MASTER/PROJECT-ANDROIDSTUDIO/MAGICFILTER/SRC/MAIN/JAVA/COM/SEU/MAGICFILTER/ENCODER/VIDEO/TEXTUREMOVIEENCODER.JAVA》 * |
某金: "Android 关于美颜/滤镜 从OpenGl录制视频的一种方案", 《HTTPS://WWW.JIANSHU.COM/P/12F06DA0A4EC》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019056744A1 (zh) * | 2017-09-20 | 2019-03-28 | 武汉斗鱼网络科技有限公司 | 截屏方法、装置、电子设备及可读存储介质 |
CN108449625B (zh) * | 2018-01-30 | 2020-08-07 | 深圳市创梦天地科技股份有限公司 | 视频截图方法、装置及终端 |
CN108449625A (zh) * | 2018-01-30 | 2018-08-24 | 深圳市创梦天地科技股份有限公司 | 视频截图方法、装置及终端 |
CN108388461A (zh) * | 2018-02-27 | 2018-08-10 | 山东超越数控电子股份有限公司 | 一种用于固件的屏幕图像截取方法与装置 |
CN109408497A (zh) * | 2018-09-20 | 2019-03-01 | 阿里巴巴集团控股有限公司 | 一种数据的渲染方法、装置及设备 |
CN109408497B (zh) * | 2018-09-20 | 2022-02-08 | 创新先进技术有限公司 | 一种数据的渲染方法、装置及设备 |
CN109821236A (zh) * | 2019-01-18 | 2019-05-31 | 恒信东方文化股份有限公司 | 一种实时图像的提取方法 |
CN109821236B (zh) * | 2019-01-18 | 2022-02-22 | 恒信东方文化股份有限公司 | 一种实时图像的提取方法 |
CN109857309B (zh) * | 2019-01-21 | 2022-02-01 | 武汉卡比特信息有限公司 | 一种基于iOS移动终端的屏幕截图投射方法 |
CN109857309A (zh) * | 2019-01-21 | 2019-06-07 | 武汉卡比特信息有限公司 | 一种基于iOS移动终端的屏幕截图投射方法 |
CN112004041A (zh) * | 2019-05-27 | 2020-11-27 | 腾讯科技(深圳)有限公司 | 视频录制方法、装置、终端及存储介质 |
CN112004041B (zh) * | 2019-05-27 | 2022-06-10 | 腾讯科技(深圳)有限公司 | 视频录制方法、装置、终端及存储介质 |
CN111405301A (zh) * | 2020-03-02 | 2020-07-10 | 广州虎牙科技有限公司 | 终端的录屏交互方法、装置、计算机设备及存储介质 |
CN113794926A (zh) * | 2021-09-03 | 2021-12-14 | 深圳创维-Rgb电子有限公司 | 屏幕图像获取方法、装置和计算机可读存储介质 |
CN113784075A (zh) * | 2021-09-28 | 2021-12-10 | 统信软件技术有限公司 | 一种屏幕录像读取方法、***及计算设备 |
CN113784075B (zh) * | 2021-09-28 | 2024-05-14 | 统信软件技术有限公司 | 一种屏幕录像读取方法、***及计算设备 |
CN114579246A (zh) * | 2022-05-05 | 2022-06-03 | 北京麟卓信息科技有限公司 | 一种安卓兼容环境中多窗口模式下安卓应用的截屏方法 |
CN114579246B (zh) * | 2022-05-05 | 2022-07-08 | 北京麟卓信息科技有限公司 | 一种安卓兼容环境中多窗口模式下安卓应用的截屏方法 |
CN117687771A (zh) * | 2023-07-24 | 2024-03-12 | 荣耀终端有限公司 | 一种缓冲区分配方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107515759B (zh) | 2020-08-04 |
WO2019056744A1 (zh) | 2019-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107515759A (zh) | 截屏方法、装置、电子设备及可读存储介质 | |
CA2823170C (en) | Immersive mode for a web browser | |
CN106941567A (zh) | 显示网络图片的方法、装置以及用户终端 | |
DE102013102285A1 (de) | Benutzerinterface-Navigation unter Verwendung druckempfindlicher Berührung | |
CN106502659B (zh) | 一种移动设备网页单页面的布局方法及*** | |
US20160216885A1 (en) | Method and device for processing touch operation of electronic apparatus | |
CN107203434A (zh) | 一种纹理共享的方法、装置以及计算机可读存储介质 | |
CN104866318A (zh) | 一种多窗口中标签页的展示方法及装置 | |
CN104346463A (zh) | 一种页面标签的加载方法、装置和浏览器客户端 | |
CN104765528A (zh) | 一种虚拟键盘显示方法及装置 | |
US20190107925A1 (en) | Optimizing a display of a user device | |
CN106294463A (zh) | 一种动态曲线的数据点更新方法和设备 | |
CN110471700B (zh) | 图形处理方法、装置、存储介质及电子设备 | |
CN108021366B (zh) | 界面动画实现方法、装置、电子设备、存储介质 | |
CN106503009A (zh) | 显示页面中数据的转移方法及装置 | |
US20170132988A1 (en) | Control method and device for changing brightness | |
CN107340886B (zh) | 一种软键盘状态确定方法、装置、介质及终端 | |
CN106909288A (zh) | 应用程序的刷新方法、装置及电子设备 | |
CN111724455A (zh) | 图像处理方法及电子设备 | |
CN103226475A (zh) | 转码时实现控件替换的方法及装置 | |
CN107589962A (zh) | 一种用户界面显示方法和装置 | |
CN115878935A (zh) | 一种图表的局部刷新方法、***、装置、设备及介质 | |
US20160048979A1 (en) | Desktop management method and electronic device with desktop management function | |
CN105278812B (zh) | 一种界面调整方法及终端 | |
US20110063210A1 (en) | Information processing apparatus, display control method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |