水印截图的生成方法、设备及计算机存储介质与流程

文档序号:29704534发布日期:2022-04-16 15:21阅读:230来源:国知局
水印截图的生成方法、设备及计算机存储介质与流程

1.本技术涉及水印技术领域,尤其涉及一种水印截图的生成方法、设备及计算机存储介质。


背景技术:

2.随着科学技术的飞速发展,人们越来越注重数据使用的安全可靠性,由于数字水印技术是能够访问数据泄露的一种手段,起到数据溯源和版权保护的作用,因此,数字水印技术的应用也越来越广泛。
3.目前,一种实现在截图图像添加水印的方式为:获取截图图像,在系统中配置一顶层透明窗口,将水印图案绘制到该透明窗口上,而后通过顶层透明窗口上所绘制的水印图案结合截图图像生成水印截图图像。但是,由于每个截图图像都需要额外合成顶层的透明窗口内容,因此,窗口管理器的负载较大,同时降低了水印截图图像的生成效率。


技术实现要素:

4.本技术实施例提供一种水印截图的生成方法、设备及计算机存储介质,通过预先加载的动态链接库即可实现对待截取图像进行水印添加操作,减少了窗口管理器所对应的负载量,有利于提高水印截图生成的质量和效率。
5.第一方面,本技术实施例提供了一种水印截图的生成方法,包括:
6.劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求;
7.确定与所述截图请求相对应的待截取图像;
8.利用预先加载的动态链接库在所述待截取图像中添加水印信息,生成水印截图,其中,所述动态链接库用于实现在所述待截取图像中添加水印信息。
9.第二方面,本技术实施例提供了一种水印截图的生成装置,包括:
10.第一获取模块,用于劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求;
11.第一确定模块,用于确定与所述截图请求相对应的待截取图像;
12.第一处理模块,用于利用预先加载的动态链接库在所述待截取图像中添加水印信息,生成水印截图,其中,所述动态链接库用于实现在所述待截取图像中添加水印信息。
13.第三方面,本技术实施例提供了一种电子设备,包括:存储器、处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现上述第一方面所示的水印截图的生成方法。
14.第四方面,本发明实施例提供了一种计算机存储介质,用于储存计算机程序,所述计算机程序使计算机执行时实现上述第一方面所示的水印截图的生成方法。
15.第五方面,本发明实施例提供了一种计算机程序产品,包括:计算机指令,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行上述第一方面所
示的水印截图的生成方法中的步骤。
16.本技术实施例提供的技术方案,通过劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求,确定与所述截图请求相对应的待截取图像,而后利用预先加载的动态链接库在所述待截取图像中添加水印信息,有效地实现了无需配置顶层透明窗口即可生成水印截图,这样有效地减少了窗口管理器的负载量,有利于提高水印截图生成的质量和效率;另外,由于水印截图是通过动态链接库所生成的,因此,可以保证在任何场景中所生成的截图均会直接添加水印信息,尤其是可以保证在全屏模式下的水印截图的生成操作,进而保证了该方法使用的稳定可靠性,并且,所添加的水印信息可以包括明水印和暗水印,进一步提高了该方法的实用性和适用范围,有利于市场的推广与应用。
附图说明
17.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1为本技术实施例提供的一种水印截图的生成方法的场景示意图;
19.图2为本技术实施例提供的一种水印截图的生成方法的流程示意图;
20.图3为本技术实施例提供的确定与所述截图请求相对应的待截取图像的示意图;
21.图4为本技术实施例提供的另一种水印截图的生成方法的流程示意图;
22.图5为本技术实施例提供的获取与所述预设应用相对应的动态链接库的流程示意图;
23.图6为本技术应用实施例提供的一种水印截图的生成方法的示意图;
24.图7为本技术实施例提供的一种水印截图的生成装置的结构示意图;
25.图8为图7所示的水印截图的生成装置所对应的电子设备的结构示意图。
具体实施方式
26.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
27.在本技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
28.应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
29.取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
30.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
31.另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
32.术语定义:
33.云桌面:又称虚拟桌面、远程桌面,由云计算厂商提供的便捷、安全的云上虚拟桌面服务,它支持快速便捷的桌面环境创建、部署、统一管控与运维。
34.水印:指在视频或者图片上加的防止他人盗图的半透明logo、图标。
35.暗水印:其是隐形到原画面里面、人肉眼无法感知的水印信息。
36.为了方便本领域技术人员理解本技术实施例提供的技术方案,下面对相关技术进行说明:
37.目前,一种实现截图水印的方式为:获取系统截图,在系统中配置一顶层透明窗口,将水印图案绘制到顶层透明窗口上,而后通过顶层透明窗口上所绘制的水印图案结合系统截图生成水印截图图像,这样在通过应用程序对桌面进行截屏操作时,截图中就可以带有预先绘制的水印图案。但是,上述方案存在以下缺陷:
38.(1)在所需要生成的水印截图图像为多个时,对于每个截图图像都需要额外合成顶层的透明窗口内容,因此,窗口管理器的负载较大。
39.(2)在部分应用场景中,无法合成带水印的截图。例如:在用户正在使用某一应用程序时,为了能够保证应用的效果,可以将应用程序的界面全屏,此时,系统的窗口处于全屏模式。在该模式下所获得的截图是直接通过系统截图api所获得的,由于截图是绕开窗口合成器所生成的,因此,无法直接合成带有水印的截图图像。
40.(3)由于水印是通过顶层透明窗口所实现的,而顶层透明窗口无法获知到截图图像中的内容,因此,在截图图像中所添加的水印无法是暗水印,进而限缩了水印截图的适用场景和范围。
41.为了解决上述技术问题,本实施例提供了一种水印截图的生成方法、设备及计算机存储介质,该方法的执行主体可以水印截图的生成装置,该水印截图的生成装置通信连接有请求端/客户端,参考附图1所示:
42.其中,客户端/请求端可以是任何具有一定数据传输能力的计算设备,具体实现时,客户端/请求端可以是手机、个人电脑pc、平板电脑、设定应用程序等等。此外,客户端的基本结构可以包括:至少一个处理器。处理器的数量取决于客户端的配置和类型。客户端也可以包括存储器,该存储器可以为易失性的,例如ram,也可以为非易失性的,例如只读存储器(read-only memory,简称rom)、闪存等,或者也可以同时包括两种类型。存储器内通常存储有操作系统(operating system,简称os)、一个或多个应用程序,也可以存储有程序数据等。除了处理单元和存储器之外,客户端还包括一些基本配置,例如网卡芯片、io总线、显示
组件以及一些外围设备等。可选地,一些外围设备可以包括,例如键盘、鼠标、输入笔、打印机等。其它外围设备在本领域中是众所周知的,在此不做赘述。
43.水印截图的生成装置是指可以在网络虚拟环境中提供水印截图的生成服务的设备,通常是指利用网络进行信息规划、水印截图的生成操作的装置。在物理实现上,水印截图的生成装置可以是任何能够提供计算服务,响应服务请求,并进行处理的设备,例如:可以是集群服务器、常规服务器、云服务器、云主机、虚拟中心等。水印截图的生成装置的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。
44.在上述本实施例中,客户端/请求端可以与水印截图的生成装置进行网络连接,该网络连接可以是无线或有线网络连接。若客户端/请求端与水印截图的生成装置是通信连接,该移动网络的网络制式可以为2g(gsm)、2.5g(gprs)、3g(wcdma、td-scdma、cdma2000、utms)、4g(lte)、4g+(lte+)、wimax、5g等中的任意一种。
45.在本技术实施例中,客户端/请求端可以获取或者生成截图请求,其中,截图请求可以是基于用户输入的执行操作所生成的,具体的,请求端上可以配置有预设系统以及运行在预设系统中的多个应用程序,上述截图请求可以是在预设系统中所生成的系统级截图请求,或者,截图请求也可以是在应用程序中所生成的应用级截图请求。在获取到截图请求之后,可以将截图请求发送至水印截图的生成装置,以使得水印截图的生成装置可以劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求,并基于截图请求进行相对应的截图操作。
46.水印截图的生成装置,用于劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求,而后确定与截图请求相对应的待截图图像,该待截图图像可以为请求端中显示区域的至少一部分。在获取到待截图图像之后,可以利用预先加载的动态链接库在待截图图像中添加水印信息,其中,动态链接库是预先配置的用于实现在截图图像中添加水印信息的链接库,从而可以稳定地生成并获取到水印截图。
47.本实施例提供的技术方案,通过劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求,确定与截图请求相对应的待截取图像,而后利用动态链接库在待截取图像中添加水印信息,从而可以生成水印截图,由于无需额外配置顶层透明窗口即可生成水印截图,因此,减少了窗口管理器的负载量,有利于提高水印截图生成的质量和效率;另外,由于水印截图是通过动态链接库所生成的,因此,可以保证在任何场景中所生成的截图均会直接添加水印信息,尤其是可以保证在全屏模式下的水印截图的生成操作,进而保证了该方法使用的稳定可靠性,并且,所添加的水印信息可以包括明水印和暗水印,进一步提高了该方法的实用性和适用范围,有利于市场的推广与应用。
48.下面结合附图,对本发明的一些实施方式作详细说明。在各实施例之间不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
49.图2为本技术实施例提供的一种水印截图的生成方法的流程示意图;参考附图2所示,本实施例提供了一种水印截图的生成方法,该方法的执行主体可以为水印截图的生成装置,可以理解的是,该水印截图的生成装置可以实现为软件、或者软件和硬件的组合,在一些实例中,水印截图的生成装置可以实现为云应用(包括云桌面)、云服务器等,即水印截图的生成方法适用于云应用、云服务器的应用场景;在另一些实例中,水印截图的生成装置
可以实现为终端设备、电子应用、服务器等,即水印截图的生成方法适用于终端设备、电子应用、服务器的应用场景。具体的,该水印截图的生成方法可以包括:
50.步骤s201:劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求。
51.步骤s202:确定与截图请求相对应的待截取图像。
52.步骤s203:利用预先加载的动态链接库在待截取图像中添加水印信息,生成水印截图,其中,动态链接库用于实现在待截取图像中添加水印信息。
53.下面对上述各个步骤进行详细说明:
54.步骤s201:劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求。
55.其中,应用程序可以包括普通应用程序或者云应用程序,在用户存在截图需求时,则可以通过应用程序实现水印截图操作,这样可以保证数据使用的安全可靠性。在应用程序为运行在水印截图的生成装置中的任意一个普通应用程序时,为了能够实现水印截图操作,水印截图的生成装置可以直接生成截图请求,此时,截图请求可以是基于用户输入的执行操作所生成的,在一些实例中,水印截图的生成装置上设置有用于与用户进行交互操作的交互界面,交互界面中可以显示预设系统和运行在预设系统中的预设应用,此时,劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求可以包括:获取用户在预设应用中输入的截图操作;基于截图操作,劫持被所述预设应用调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求。
56.具体的,在水印截图的生成装置上可以配置有交互界面,截图请求可以是基于用户在交互界面中所输入的执行操作/执行指令而生成的,用户输入截图操作/截图指令时,则可以基于截图操作/截图指令劫持被预设应用调用的,用于实现截图操作的系统截图api的截图请求。需要注意的是,由于水印截图的生成装置上可以配置预设系统(例如:mac操作系统、嵌入式系统等等)和运行在预设系统中的多个应用程序(例如:聊天应用程序、绘图应用程序、浏览器应用程序等等),因此,在不同场景下所生成的截图请求可以对应有不同的请求类型。
57.在一些实例中,截图请求可以包括系统级截图请求和应用级截图请求,具体的,当用户在预设系统中输入截图指令或者截图操作时,所劫持到的截图请求为系统级截图请求,例如:水印截图的生成装置上配置有用于实现系统截图的操作控件(全屏截图控件"prt sc sysrq"),用户对操作控件执行点击操作,则可以基于操作控件的点击操作生成系统级截图请求。相类似的,当用户在应用程序中输入截图指令或者截图操作时,所获取到的截图请求为应用级截图请求,例如:水印截图的生成装置上配置有聊天应用程序,聊天应用程序中配置有用于实现截图操作的截图控件,用户对截图控件执行点击操作,则可以基于截图控件的点击操作生成应用级截图请求。
58.在另一些实例中,水印截图的生成装置上设置有用于与用户进行交互操作的云应用程序,云应用程序中可以包括云桌面等,此时,劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求可以包括:获取用户在云应用中输入的截图操作;基于截图操作,劫持被云应用调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求。
59.具体的,截图请求可以是基于用户在云应用中所输入的执行操作/执行指令而生成的,用户输入截图操作/截图指令时,则可以基于截图操作/截图指令劫持被云应用调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求。需要注意的是,由于云应用可以包括以下至少之一:云桌面(系统级应用程序)、云聊天应用程序、云绘图应用程序、云浏览器应用程序等等,因此,在不同场景下所生成的截图请求可以对应有不同的请求类型。
60.在一些实例中,云服务场景中所劫持的截图请求可以包括系统级截图请求和应用级截图请求,具体的,当用户在云桌面中输入截图指令或者截图操作时,所劫持到的截图请求为系统级截图请求,例如:云桌面上配置有用于实现系统截图的操作控件(全屏截图控件),用户对操作控件执行点击操作,则可以基于操作控件的点击操作生成系统级截图请求。相类似的,当用户在云应用中输入截图指令或者截图操作时,所获取到的截图请求为应用级截图请求,例如:用户在云绘图应用程序中进行绘图操作时,云绘图应用程序中可以配置有用于实现截图操作的截图控件,用户对截图控件执行点击操作,则可以基于截图控件的点击操作生成应用级截图请求。
61.需要注意的是,无论是系统级截图请求、还是应用级截图请求,上述的截图请求均可以实现对显示区域中的至少一部分区域进行截图操作。
62.在另一些实例中,截图请求可以是第三设备所发送的,具体的,水印截图的生成装置可以通信连接有第三设备,第三设备可以为控制设备(例如:远程控制设备)或者用户设备,在第三设备中可以生成与水印截图的生成装置相对应的截图请求,而后将截图请求发送至水印截图的生成装置,从而使得水印截图的生成装置可以获取到截图请求,并可以基于截图请求在水印截图的生成装置中进行相对应的水印截图操作。
63.步骤s202:确定与截图请求相对应的待截取图像。
64.在获取到截图请求之后,则可以确定与截图请求相对应的待截取图像,需要注意的是,与截图请求相对应的待截取图像的数量可以为一个或多个,在待截取图像的数量为多个时,则可以基于多个待截取图像实现录屏的功能。另外,本实施例对于待截取图像的具体确定方式不做限定,在一些实例中,在获取到截图请求之后,可以确定截图请求所对应的截取区域,截取区域为显示区域的至少一部分,基于截取区域确定与截图请求相对应的待截取图像。
65.在另一些实例中,截图请求可以包括应用级截图请求和系统级截图请求,当截图请求为系统级截图请求时,则可以直接通过系统截图应用程序编程接口api来获取到待截取图像;当截图请求为应用级截图请求时,此时的确定与截图请求相对应的待截取图像可以包括:通过截图请求,调用系统截图应用程序编程接口api,以通过系统截图api获取待截取图像。
66.举例来说,如图3所示,在通过某一个应用程序的应用截图api生成截图请求时,则应用程序中的调用模块可以通过截图请求调用系统截图api,即将截图请求发送至系统截图api,在系统截图api获取到截图请求之后,则可以基于截图请求进行截图操作,获得待截取图像。在通过系统截图api获得待截取图像之后,系统截图api可以将待截取图像通过调用模块返回至应用程序,从而使得使用应用程序用户可以通过应用截图api获取到相对应的待截取图像。
67.本实施例中,通过系统截图api来获取到待截取图像,有效地实现了在任何模式下所生成的待截取图像均不会绕开窗口合成器,从而便于保证在任何模式下所生成的截图中均可以进行水印的添加操作,进而提高了该方法使用的稳定可靠性。
68.步骤s203:利用预先加载的动态链接库在待截取图像中添加水印信息,生成水印截图,其中,动态链接库用于实现在待截取图像中添加水印信息。
69.在获取到待截取图像之后,为了保证数据使用的合法性和安全可靠性,则可以利用预先加载的动态链接库在待截取图像中添加水印信息,从而可以生成水印截图,需要注意的是,上述的动态链接库与用于保证系统正常运行或者应用程序正常运行的动态链接库不同,其为用于实现在待截取图像中添加水印信息的链接库。
70.另外,在水印截图中所添加的水印信息可以包括以下至少之一:明水印、暗水印,需要注意的是,在水印信息为明水印时,如图1所示,在截图中可以添加水印文字,而图中所示的“水印文字”仅仅为示意,明水印所对应的内容可以基于用户的设计需求和应用需求进行配置,例如,明水印的内容可以为:保密文件、加密信息、加密数据、保密数据、禁止泄露、禁止泄密等水印内容,此时,不同的待截取图像中所添加的水印信息可以相同或不同。在水印信息为暗水印时,暗水印是用户视觉无法感知的,其具体可以是基于待截取图像中所包括的内容所生成的,此时,不同的待截取图像中所添加的水印信息不同。具体的,为了实现将暗水印稳定地添加至待截取图像中,可以先获取待截取图像中的图像内容,通过对图像内容进行分析处理,可以生成与待截取图像所对应的暗水印,而后则可以将所生成的暗水印添加至待截取图像中。
71.在另一些实例中,在生成水印截图之后,可以对水印截图进行预览显示,以使得用户可以直接查看到所生成的水印截图中的内容和效果,在所生成的水印截图不满足预期时,则可以删除所生成的水印截图,并重新进行截图操作;在所生成的水印截图满足预期时,则可以对所生成的水印截图进行保存,以使得用户方便对所保存的水印截图进行查看、调用操作。
72.本实施例提供的水印截图的生成方法,通过劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求,确定与所述截图请求相对应的待截取图像,而后利用预先加载的动态链接库在所述待截取图像中添加水印信息,有效地实现了无需配置顶层透明窗口即可生成水印截图,这样有效地减少了窗口管理器的负载量,有利于提高水印截图生成的质量和效率;另外,由于水印截图是通过动态链接库所生成的,因此,可以保证在任何场景中所生成的截图均会直接添加水印信息,尤其是可以保证在全屏模式下的水印截图的生成操作,进而保证了该方法使用的稳定可靠性,并且,所添加的水印信息可以包括明水印和暗水印,进一步提高了该方法的实用性和适用范围,有利于市场的推广与应用。
73.图4为本技术实施例提供的另一种水印截图的生成方法的流程示意图;参考附图4所示,为了提高该方法的实用性,在劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求之前,本实施例中的方法还可以包括:
74.步骤s401:获取与预设应用相对应的动态链接库。
75.其中,为了能够实现水印截图操作,在获取到截图请求之前,可以获取与预设应用相对应的动态链接库,在一些实例中,不同的预设应用可以对应有相同或者不同的动态链
接库,该动态链接库用于实现在预设应用所生成的截图中添加水印信息。具体的,本实施例对于获取与预设应用相对应的动态链接库的实现方式不做限定,在一些实例中,动态链接库可以存储在预设区域,通过访问预设区域即可获取与预设应用相对应的动态链接库。在另一些实例中,动态链接库可以存储在预设设备中,预设设备可以与水印截图的生成装置通信连接,水印截图的生成装置可以获取到由预设设备发送的动态链接库。
76.步骤s402:在预设应用启动的过程中,加载动态链接库。
77.在获取到动态链接库之后,可以在预设应用启动的过程中,加载动态链接库,这样可以实现在通过预设应用中进行截取操作时,则可以直接生成带有水印的截图。
78.需要注意的是,为了保证预设应用的正常运行,在预设应用启动时,不仅需要加载动态链接库,还需要加载用于保证预设应用正常运行的基础动态链接库,因此,本实施例中的在预设应用启动的过程中,加载动态链接库可以包括:获取与预设应用相对应的基础动态链接库,基础动态链接库用于实现预设应用的正常运行;在预设应用启动的过程中,加载动态链接库;在动态链接库加载完毕之后,加载基础动态链接库。
79.其中,不同的预设应用可以对应有不同的基础动态链接库,该基础动态链接库用于实现预设应用的正常运行。具体的,本实施例对于获取与预设应用相对应的基础动态链接库的实现方式不做限定,在一些实例中,基础动态链接库可以存储在预设区域,通过访问预设区域即可获取与预设应用相对应的基础动态链接库。在另一些实例中,基础动态链接库可以存储在预设设备中,预设设备可以与水印截图的生成装置通信连接,水印截图的生成装置可以获取到由预设设备所发送的基础动态链接库。
80.在获取到基础动态链接库之后,在预设应用启动的过程中,可以加载所获得的动态链接库和基础动态链接库,由于动态链接库用于实现在待截取图像中添加水印信息,因此,为了能够保证预设应用可以稳定地实现水印截图操作,对于需要加载的动态链接库和基础动态链接库而言,可以先加载动态链接库,在动态链接库加载完毕之后,可以加载基础动态链接库,这样有效地保证了对动态链接库进行加载的稳定可靠性。
81.本实施例中,通过获取与预设应用相对应的动态链接库,在预设应用启动的过程中加载动态链接库,从而有效地保证了在预设应用中可以实现水印截图操作,获得添加有水印信息的截图信息,进一步保证了水印截图生成的质量和效率。
82.图5为本技术实施例提供的获取与预设应用相对应的动态链接库的流程示意图;参考附图5所示,本实施例提供了一种获取与预设应用相对应的动态链接库的实现方式,具体的,本实施例中的获取与预设应用相对应的动态链接库可以包括:
83.步骤s501:通过动态库注入模块确定与预设应用相对应的动态链接库。
84.其中,预设系统中可以配置有动态库注入模块,该动态库注入模块用于辅助预设应用获取到动态链接库,在一些实例中,动态链接库可以存储在预设区域中,通过动态库注入模块访问预设区域,即可获取到动态链接库,而后将动态链接库发送至预设应用,从而实现了可以通过动态库注入模块确定与预设应用相对应的动态链接库。
85.在另一些实例中,通过动态库注入模块确定与预设应用相对应的动态链接库可以包括:通过系统驱动模块检测预设应用的运行状态;在运行状态为启动状态时,通过动态库注入模块和系统驱动模块确定与预设应用相对应的动态链接库。
86.水印截图的生成装置中可以配置有系统驱动模块,系统驱动模块与动态库注入模
块通信连接,其中,预设应用的运行状态可以包括启动状态和未启动状态,由于在预设应用处于未启动状态时,无需加载动态链接库,在预设应用处于启动状态时,则需要加载动态链接库。因此,为了能够保证动态链接库加载的稳定可靠性,可以通过系统驱动模块检测预设应用的运行状态。具体的,在系统驱动模块检测到预设应用的启动操作时,则可以确定预设应用处于启动状态;在系统驱动模块未检测到预设应用的启动操作时,则可以确定预设应用处于未启动状态。在预设应用的运行状态为启动状态时,为了能够保证预设应用的正常运行以及在截图中添加水印操作,则需要加载动态链接库和基础动态链接库,进而可以通过动态库注入模块和系统驱动模块确定与预设应用相对应的动态链接库。
87.在一些实例中,通过动态库注入模块和系统驱动模块确定与预设应用相对应的动态链接库可以包括:通过动态库注入模块接收系统驱动模块发送的动态库加载请求;基于动态库加载请求和动态库注入模块,确定与预设应用相对应的动态链接库。
88.在系统驱动模块检测到预设应用处于启动状态时,系统驱动模块可以生成动态库加载请求,该动态库加载请求用于将动态链接库发送至预设应用中,具体的,系统驱动模块可以将所生成的动态库加载请求发送至动态库注入模块,从而使得动态库注入模块接收到系统驱动模块发送的动态库加载请求。在动态库注入模块获取到动态库加载请求之后,动态库注入模块可以基于动态库加载请求来确定与预设应用相对应的动态链接库,从而有效地保证了对动态链接库进行确定的准确可靠性。
89.步骤s502:获取动态库注入模块发送的与预设应用相对应的动态链接库。
90.在通过动态库注入模块确定与预设应用相对应的动态链接库之后,动态库注入模块可以将动态链接库发送至预设应用,从而使得预设应用可以获取到动态库注入模块发送的与预设应用相对应的动态链接库。
91.本实施例中,通过动态库注入模块确定与预设应用相对应的动态链接库,而后获取动态库注入模块发送的与预设应用相对应的动态链接库,从而有效地保证了对动态链接库进行获取的准确可靠性,而后便于基于动态链接库实现在截图中添加水印信息,进一步保证了数据使用的安全可靠性。
92.具体应用时,参考附图6所示,本应用实施例提供了一种水印截图的生成方法,该方法可以应用在云桌面的应用场景,在云桌面的应用场景中,通过在截图中添加水印信息,能够有效地防止他人通过对桌面屏幕进行截图或拍照等可能导致版权纠纷的操作行为。需要注意的是,本应用实施例中的方法不仅适用于云桌面的应用场景,还可以适用于云应用程序、普通应用程序的应用场景,本领域技术人员可以根据具体的应用需求选择或者配置所需要运行的应用场景。
93.具体的,该方法的执行主体可以为水印截图的生成装置,该水印截图的生成装置中可以配置有运行系统和位于运行系统中的预设应用,运行系统中可以包括云桌面,运行在云桌面上的应用程序可以通过调用系统截图api获取到云桌面/预设应用的画面,其中,系统截图api的实现方式可以包括以下多种:图形设备接口(graphics device interface,简称gdi)、显示程序接口(direct 3d,简称d3d)、显卡驱动、系统通用应用平台uwp、用于绘制多媒体应用程序的2d图形的ddraw。
94.运行系统中可以包括位于内核空间中的系统驱动模块,系统驱动模块用于检测应用程序所对应的进程创建操作,在应用程序处于启动状态时,则需要加载与应用程序所对
应的动态链接库,在应用程序处于动态链接库的加载阶段时,系统驱动模块可以阻塞动态链接库的加载操作,并可以向动态库注入模块发送请求消息,以使得动态库注入模块基于请求消息向应用程序注入与应用程序相对应的动态链接库(dynamic link library或者dynamic-link library,简称hook.dll)。
95.运行系统中还可以包括位于用户空间的动态库注入模块,该动态库注入模块与系统驱动模块通信连接,动态库注入模块用于接收系统驱动模块所发送的请求消息,其中,请求消息中可以包括应用程序所对应的进程信息和程序身份标识,而后可以基于请求消息向指定的应用程序中注入动态链接库。需要注意的是,当运行系统中同时启动多个应用程序时,可以通过系统驱动模块和动态库注入模块向多个应用程序中同时注入与应用程序相对应的动态链接库。
96.应用程序中可以包括调用模块,调用模块用于劫持应用截图api所对应的截图请求,并将截图请求转发至系统截屏api,以实现在截图中添加水印信息。具体的,本应用实施例中的方法可以包括以下步骤:
97.步骤1:用户在应用程序中通过应用截图api生成截图请求。
98.步骤2:调用模块获取到通过应用截图api获取到截图请求,并会调用系统截图api获取到桌面数据或者应用画面数据,即将截图请求发送至系统截图api。
99.步骤3:在系统截图api基于截图请求确定待截取图像,并可以将待截取图像返回至调用模块。
100.步骤4:调用模块可以利用预先加载的动态链接库在待截取图像中添加水印信息,从而可以生成水印截图,并可以将水印截图返回给应用程序。
101.具体的,系统截图api可以返回桌面/应用程序的画面数据给调用模块,调用模块获取到数据(待截取图像)后,可以添加水印到返回的数据(待截取图像)中,从而有效地实现可以准确地生成水印截图。
102.此外,本应用实施例中的方法还可以包括以下步骤:
103.步骤11:用户在应用程序中通过录屏api生成录屏请求。
104.步骤12:调用模块获取到通过录屏api获取到录屏请求,并会调用系统截图api获取到桌面数据或者应用画面数据,即将录屏请求发送至系统截图api。
105.步骤13:在系统截图api基于录屏请求确定多个待截取图像,并可以将多个待截取图像返回至调用模块。
106.步骤14:调用模块可以利用预先加载的动态链接库在多个待截取图像中添加水印信息,从而可以生成多个水印截图,并可以将多个水印截图返回给应用程序,而后可以基于多个水印截图生成带有水印的视频数据。
107.需要注意的是,本应用实施例中的方法还可以适用于共享屏幕的应用场景,具体的,本实施例中的方法还可以包括:
108.步骤21:在第一终端获取到第二终端所发送的共享屏幕请求时,则第一终端中的调用模块可以基于共享屏幕请求调用系统截图api。
109.步骤22:系统截图api可以基于共享屏幕请求获取到桌面数据或者应用画面数据。
110.步骤23:在系统截图api基于共享屏幕请求确定待显示图像,并可以将待显示图像返回至调用模块。
111.步骤24:调用模块可以利用预先加载的动态链接库在待显示图像中添加水印信息,从而可以生成水印图像,并可以将水印图像返回第一终端的预设应用。
112.步骤25:第一终端基于水印图像和共享屏幕请求与第二终端进行共享屏幕操作,具体的,在第二终端中可以显示所生成的水印图像。
113.本应用实施例提供的技术方案,有效地实现了api层的劫持操作,进而能够保证在设备处于全屏模式下时,系统中所产生的截图信息和应用程序中所产生的截图信息都能成功添加水印信息,并且,能够实现将水印隐藏到截图中,进而可以实现暗水印;此外,该方案只有在应用程序触发截图操作或者系统触发截图操作时,才会进行水印添加操作,在其它时候无任何额外的性能损耗,因此,有效地保证了该方法的实用性;另外,该方法可以应用于截屏场景、录屏场景、共享屏幕等可以将桌面画面/应用程序中的画面分发出去的应用场景,进而拓展了该方法的适用范围,提高了数据使用的安全可靠性,有利于市场的推广与应用。
114.图7为本技术实施例提供的一种水印截图的生成装置的结构示意图;参考附图7所示,本实施例提供了一种水印截图的生成装置,该生成装置用于执行上述图2所示的水印截图的生成方法,具体的,该生成装置可以包括:
115.第一获取模块11,用于劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求;
116.第一确定模块12,用于确定与截图请求相对应的待截取图像;
117.第一处理模块13,用于利用预先加载的动态链接库在待截取图像中添加水印信息,生成水印截图,其中,动态链接库用于实现在待截取图像中添加水印信息。
118.在一些实例中,在劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求之前,本实施例中的第一获取模块11和第一处理模块13还用于执行以下步骤:
119.第一获取模块11,用于获取与预设应用相对应的动态链接库;
120.第一处理模块13,用于在预设应用启动的过程中,加载动态链接库。
121.在一些实例中,在第一处理模块13在预设应用启动的过程中,加载动态链接库时,该第一处理模块13用于执行:获取与预设应用相对应的基础动态链接库,基础动态链接库用于实现预设应用的正常运行;在预设应用启动的过程中,加载动态链接库;在动态链接库加载完毕之后,加载基础动态链接库。
122.在一些实例中,在第一获取模块11获取与预设应用相对应的动态链接库时,该第一获取模块11用于执行:通过动态库注入模块确定与预设应用相对应的动态链接库;获取动态库注入模块发送的与预设应用相对应的动态链接库。
123.在一些实例中,在第一获取模块11通过动态库注入模块确定与预设应用相对应的动态链接库时,该第一获取模块11用于执行:通过系统驱动模块检测预设应用的运行状态;在运行状态为启动状态时,通过动态库注入模块和系统驱动模块确定与预设应用相对应的动态链接库。
124.在一些实例中,在第一获取模块11通过动态库注入模块和系统驱动模块确定与预设应用相对应的动态链接库时,该第一获取模块11用于执行:通过动态库注入模块接收系统驱动模块发送的动态库加载请求;基于动态库加载请求和动态库注入模块,确定与预设
应用相对应的动态链接库。
125.在一些实例中,在第一获取模块11劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求时,该第一获取模块11用于执行:获取用户在预设应用中输入的截图操作;基于截图操作,劫持被所述预设应用调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求。
126.在一些实例中,在第一获取模块11劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求时,该第一获取模块11用于执行:获取用户在云应用中输入的截图操作;基于所述截图操作,劫持被所述云应用调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求。
127.在一些实例中,在第一确定模块12确定与截图请求相对应的待截取图像时,该第一确定模块12用于执行:通过截图请求,调用系统截图应用程序编程接口api,以通过系统截图api获取待截取图像。
128.在一些实例中,水印信息包括以下至少之一:明水印、暗水印。
129.图7所示装置可以执行图1-图6所示实施例的方法,本实施例未详细描述的部分,可参考对图1-图6所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1-图6所示实施例中的描述,在此不再赘述。
130.在一个可能的设计中,图7所示水印截图的生成装置的结构可实现为一电子设备,该电子设备可以是手机、平板电脑、个人电脑pc、服务器等各种设备。如图8所示,该电子设备可以包括:第一处理器21和第一存储器22。其中,第一存储器22用于存储相对应电子设备执行上述图1-图6所示实施例中提供的水印截图的生成方法的程序,第一处理器21被配置为用于执行第一存储器22中存储的程序。
131.程序包括一条或多条计算机指令,其中,一条或多条计算机指令被第一处理器21执行时能够实现如下步骤:
132.劫持被应用程序调用的、用于实现截图操作的系统截图应用程序编程接口api的截图请求;
133.确定与截图请求相对应的待截取图像;
134.利用预先加载的动态链接库在待截取图像中添加水印信息,生成水印截图,其中,动态链接库用于实现在待截取图像中添加水印信息。
135.进一步的,第一处理器21还用于执行前述图1-图6所示实施例中的全部或部分步骤。
136.其中,电子设备的结构中还可以包括第一通信接口23,用于电子设备与其他设备或通信网络通信。
137.另外,本发明实施例提供了一种计算机存储介质,用于储存电子设备所用的计算机软件指令,其包含用于执行上述图1-图6所示方法实施例中水印截图的生成方法所涉及的程序。
138.此外,本发明实施例提供了一种计算机程序产品,包括:计算机指令,当计算机指令被一个或多个处理器执行时,致使一个或多个处理器执行上述图1-图6所示方法实施例中水印截图的生成方法中的步骤。
139.以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是
或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
140.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
141.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
142.这些计算机程序指令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
143.这些计算机程序指令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
144.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
145.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
146.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
147.最后应说明的是:以上各实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述各实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依
然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1