一种图片处理方法和服务器与流程

文档序号:17071110发布日期:2019-03-08 23:19阅读:207来源:国知局
一种图片处理方法和服务器与流程

本发明涉及图像处理技术领域,特别涉及一种图片处理方法和服务器。



背景技术:

随着互联网的飞速发展,各种网络类应用层出不穷,例如在线图片处理器。在线图片处理器通常由java编程语言编写并安装在提供商的服务器上,用户可以使用上述在线图片处理器进行图片处理。

当用户想对某一图片进行处理时,用户可以通过任意客户端的网络浏览器进入上述在线图片处理器,然后可以在上述在线图片处理器中选择各种编辑功能,如缩放、裁剪等,对上述图片进行图片处理操作。这样,上述网页浏览器可以接收到上述图片处理操作,并基于该图片处理操作生成相应的图片处理请求,将该图片处理请求发送给上述服务器。之后,上述服务器在接收到上述图片处理请求时,可以基于在线图片处理器中与图片处理对应的web(website,网站)项目,调用本地图片处理器对上述图片进行相应的图片处理,并在图片处理完成后将处理后的图片返回给用户。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

为了支持上述在线图片处理器,上述本地图片处理器通常为采用java编程语言编写的应用级程序,故而该本地图片处理器对图片的并发处理能力较弱,处理速度较低;同时,为了便于运维管理,通常将上述本地图片处理器部署于另外的应用服务器上,使得上述图片处理请求往往由上述服务器接收并转发给应用服务器进行处理,导致图片处理的时间较长。故而,图片处理效率较低。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种图片处理方法和服务器。所述技术方案如下:

第一方面,提供了一种图片处理方法,所述方法包括:

服务器接收客户端发送的对目标图片的图片处理请求,获取所述目标图片的数据流和图片处理参数;

所述服务器的在线图片处理器将所述数据流和所述图片处理参数,发送至集成在所述服务器的操作系统中的预设图片处理模块;

所述预设图片处理模块基于所述图片处理参数对所述数据流进行处理,并将处理后的所述数据流返回至所述在线图片处理器;

所述服务器基于处理后的所述数据流生成已处理的所述目标图片,并将已处理的所述目标图片返回至所述客户端

进一步的,所述图片处理请求携带有目标图片的网络地址;

所述获取所述目标图片的数据流,包括:

所述服务器从所述图片处理请求中提取所述目标图片的网络地址,并通过访问所述目标图片的网络地址获取所述目标图片的数据流。

进一步的,所述图片处理请求携带有对目标图片的操作命令;

所述获取所述目标图片的图片处理参数,包括:

所述服务器从所述图片处理请求中提取所述对目标图片的操作命令,将所述操作命令转换为所述图片处理参数。

进一步的,所述在线图片处理器中预先集成有指向所述预设图片处理模块的应用程序编程接口;

所述服务器的在线图片处理器将所述数据流和所述图片处理参数,发送至集成在所述服务器的操作系统中的预设图片处理模块,包括:

所述服务器的在线图片处理器通过所述应用程序编程接口,将所述数据流和所述图片处理参数发送至集成在所述服务器的操作系统中的预设图片处理模块;

所述将处理后的所述数据流返回至所述在线图片处理器,包括:

所述服务器通过所述应用程序编程接口将处理后的所述数据流返回至所述在线图片处理器。

进一步的,所述预设图片处理模块基于imagemagick库生成,并以动态链接库的形式集成在所述服务器的操作系统。

进一步的,所述预设图片处理模块基于所述图片处理参数对所述数据流进行处理,并将处理后的所述数据流返回至所述在线图片处理器,包括:

当所述图片处理参数为多个时,所述预设图片处理模块按照所述图片处理参数的数量将所述数据流复制为多条数据流,并根据每个所述图片处理参数对每条数据流进行并发处理;

所述预设图片处理模块对并发处理后的各条数据流进行合并,并将合并后的所述数据流返回至所述在线图片处理器。

进一步的,所述预设图片处理模块基于所述图片处理参数对所述数据流进行处理,包括:

当接收到所述数据流时,所述预设图片处理模块对所述数据流进行校验处理;

所述预设图片处理模块在完成所述校验处理后,对所述数据流进行加锁,并基于所述图片处理参数对所述数据流进行处理。

第二方面,提供了一种服务器,所述服务器安装有在线图片处理器,其中,所述服务器包括:

获取模块,用于接收客户端发送的对目标图片的图片处理请求,获取所述目标图片的数据流和图片处理参数;

所述在线图片处理器,用于将所述数据流和所述图片处理参数,发送至集成在所述服务器的操作系统中的预设图片处理模块;

所述预设图片处理模块,用于基于所述图片处理参数对所述数据流进行处理,并将处理后的所述数据流返回至所述在线图片处理器;

返回模块,用于基于处理后的所述数据流生成已处理的所述目标图片,并将已处理的所述目标图片返回至所述客户端。

进一步的,所述图片处理请求携带有目标图片的网络地址;

所述获取模块,还用于:

从所述图片处理请求中提取所述目标图片的网络地址,并通过访问所述目标图片的网络地址获取所述目标图片的数据流。

进一步的,所述图片处理请求携带有对目标图片的操作命令;

所述获取模块,还用于:

从所述图片处理请求中提取所述对目标图片的操作命令,将所述操作命令转换为所述图片处理参数。

进一步的,所述在线图片处理器中预先集成有指向所述预设图片处理模块的应用程序编程接口;

所述在线图片处理器,还用于:

通过所述应用程序编程接口,将所述数据流和所述图片处理参数发送至集成在所述服务器的操作系统中的预设图片处理模块;

所述返回模块,还用于:

通过所述应用程序编程接口将处理后的所述数据流返回至所述在线图片处理器。

进一步的,所述预设图片处理模块基于imagemagick库生成,并以动态链接库的形式集成在所述服务器的操作系统。

进一步的,所述预设图片处理模块,还用于:

当所述图片处理参数为多个时,按照所述图片处理参数的数量将所述数据流复制为多条数据流,并根据每个所述图片处理参数对每条数据流进行并发处理;

对并发处理后的各条数据流进行合并,并将合并后的所述数据流返回至所述在线图片处理器。

进一步的,所述预设图片处理模块,还用于:

当接收到所述数据流时,对所述数据流进行校验处理;

在完成所述校验处理后,对所述数据流进行加锁,并基于所述图片处理参数对所述数据流进行处理。

本发明实施例提供的技术方案带来的有益效果是:

在本实施例中,服务器接收客户端发送的对目标图片的图片处理请求,获取目标图片的数据流和图片处理参数;服务器的在线图片处理器将数据流和图片处理参数,发送至集成在服务器的操作系统中的预设图片处理模块;预设图片处理模块基于图片处理参数对数据流进行处理,并将处理后的数据流返回至在线图片处理器;服务器基于处理后的数据流生成已处理的目标图片,并将已处理的目标图片返回至客户端。这样,服务器可以将待处理的图片,直接交由预设图片处理模块进行图片处理,由于该预设图片处理模块作为在操作系统中注册的系统服务,可以提高图片的并发处理能力及处理速度。另外,还可以解决因服务器将待处理的图片转发给其他应用服务器进行处理所带来的网络传输消耗问题,进一步降低了图片处理时间,有效提高了图片处理效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1是本发明实施例提供的一种网络场景示意图;

图2是本发明实施例提供的一种图片处理方法流程图;

图3是本发明实施例提供的一种图片处理方法的步骤示意图;

图4是本发明实施例提供的一种服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明实施例提供了一种图片处理方法,该方法的执行主体可以是服务器,其可以部署于在线图片处理器的提供商所管理的机房,上述在线图片处理器可以集成于各提供商的云存储业务中,用于为使用云存储业务的用户提供在线图片编辑功能。上述服务器可以对待处理的图片进行图片处理,同时还可以为用户提供上述在线图片处理器的web应用界面,用户可以通过运行在任意客户端的网页浏览器登录该web应用界面,使用上述在线图片处理器对待处理的图片进行在线图片处理。相应的网络场景可以如图1所示。上述服务器中可以包括处理器、存储器、收发器,处理器可以用于进行下述流程中对图片的处理,存储器可以用于存储下述处理过程中需要的数据以及产生的数据,收发器可以用于接收和发送下述处理过程中的相关数据。

下面将结合具体实施方式,对图2所示的一种图片处理方法的处理流程进行详细的说明,内容可以如下:

步骤201,服务器接收客户端发送的对目标图片的图片处理请求,获取目标图片的数据流和图片处理参数。

在实施中,当用户想对某一图片(可称为目标图片)进行图片处理时,用户可以在任意客户端(例如个人计算机、平板电脑)上打开已安装的网页浏览器,然后在网页浏览器的地址栏中输入在线图片处理器的web应用界面的ip(internetprotocol,网络互连协议)地址,从而可以进入该在线图片处理器,之后,用户可以在上述在线图片处理器中选择各种编辑功能,进行图片处理操作,例如通过鼠标选择图片的裁剪区域、结合鼠标滑轮和键盘的快捷键进行图片缩放等。这样,上述网页浏览器可以接收到上述图片处理操作,并可以基于图片处理操作生成相应的图片处理请求,之后,网页浏览器可以将上述图片处理请求发送给为该客户端提供在线图片处理业务的服务器。服务器在接收到上述客户端发送的对目标图片的图片处理请求后,可以对目标图片的数据流和图片处理参数进行获取,其中,数据流可以是目标图片的所有二进制数据的集合,图片处理参数可以包括缩放参数、裁剪参数、水印参数等一个或多个处理参数,每个图片处理参数可以包括一个或多个子参数,例如,缩放参数可以包括缩放宽度参数、缩放高度参数,裁剪参数可以包括裁剪横坐标参数、裁剪纵坐标参数。

可选的,上述服务器可以通过目标图片的网络地址获取目标图片的数据流,相应的处理可以如下:服务器从图片处理请求中提取目标图片的网络地址,并通过访问目标图片的网络地址获取目标图片的数据流。

在实施中,网页浏览器可以生成携带有目标图片的网络地址的图片处理请求。这样,上述服务器在接收到上述客户端发送的对目标图片的图片处理请求后,服务器可以从图片处理请求中提取出目标图片的网络地址,之后,服务器可以访问该网络地址,获取目标图片的数据流。具体的,目标图片的网络地址可以是url(uniformresourcelocator,统一资源定位符)地址,例如ww4.sinaimg.cn/large/006y8mn6gw1fa5ob,服务器通过访问该url地址,可以获取到目标图片的数据流。进一步的,如果目标图片是存储在客户端本地的图片,网页浏览器则可以直接将存储在客户端的目标图片发送给上述服务器,这样,上述服务器可以获取到目标图片的数据流。

可选的,上述服务器可以基于对目标图片的操作命令获取目标图片的图片处理参数,相应的处理可以如下:服务器从图片处理请求中提取对目标图片的操作命令,将操作命令转换为图片处理参数。

在实施中,网页浏览器在接收到用户进行的图片处理操作后,可以生成与图片处理操作对应的操作命令,该操作命令可以携带有与图片处理操作相关的操作信息,例如,网页浏览器在接收到利用鼠标滑轮和键盘的快捷键进行缩放的图片处理操作时,可以生成携带有缩放信息的缩放命令。之后,网页浏览器可以生成携带有对目标图片的操作命令的图片处理请求。这样,上述服务器在接收到上述客户端发送的对目标图片的图片处理请求后,可以从图片处理请求中提取出对目标图片的操作命令,之后,上述服务器可以基于操作命令携带的操作信息,将操作命令转换为图片处理参数。

步骤202,服务器的在线图片处理器将数据流和图片处理参数,发送至集成在服务器的操作系统中的预设图片处理模块。

在实施中,上述服务器中可以运行有在线图片处理器,该在线图片处理器可以是普通的由java编程语言编写的网页交互类java应用程序,其可以集成有多个web项目,如可以同外部进行通信的web项目、具有调用其他应用服务器的本地图片处理器进行图片处理的web项目等。另外,在上述服务器的操作系统中还集成有预设图片处理模块,该预设图片处理模块可以基于图片处理参数对图片进行缩放、裁剪等各类图片处理,其作为在操作系统中注册的系统服务,具有较高的图片并发处理能力及处理速度。这样,上述服务器在获取到目标图片的数据流和图片处理参数后,可以将目标图片的数据流和图片处理参数发送给上述在线图片处理器。之后,在线图片处理器可以将目标图片的数据流和图片处理参数,发送给上述预设图片处理模块。

可选的,上述预设图片处理模块可以基于imagemagick库生成,并以动态链接库的形式集成在上述服务器的操作系统。具体的,可以在imagemagick库的基础上对其进行功能扩展与改造,如对imagemagick库的线程锁机制锁进行优化,以得到预设图片处理模块。之后,可以将预设图片处理模块发布为上述服务器的操作系统的动态链接库,以注册为该服务器的系统服务。需要说明的是,将预设图片处理模块发布为上述服务器的操作系统的系统服务后,该服务器可以将对目标图片的图片处理任务直接交由预设图片处理模块进行处理,从而可以解决由该服务器将目标图片转发给其他应用服务器进行处理所带来的网络传输消耗问题,进一步降低图片处理的时间,从而可以有效提高图片处理效率。另外,由于预设图片处理模块与服务器进行了绑定,因而不需要单独对预设图片处理模块进行维护与管理,节省了运维成本,并且,作为系统服务,预设图片处理模块的服务可用性可以等同于服务器的稳定性,因此,可以有效提高图片处理的稳定性。

可选的,可以通过应用程序编程接口(applicationprogramminginterface,api)进行数据流和图片处理参数的发送,相应的,步骤202的具体处理可以如下:服务器的在线图片处理器通过应用程序编程接口,将数据流和图片处理参数发送至集成在服务器的操作系统中的预设图片处理模块。

在实施中,上述应用程序编程接口可以是预设图片处理模块对外封装的应用程序编程接口,其预先植入在上述在线图片处理器中,在线图片处理器可以根据应用程序编程接口的描述方式,调用上述预设图片处理模块对待处理的图片进行图片处理。这样,在线图片处理器可以通过上述应用程序编程接口,将目标图片的数据流以及目标图片的图片处理参数,发送给上述预设图片处理模块。

步骤203,预设图片处理模块基于图片处理参数对数据流进行处理,并将处理后的数据流返回至在线图片处理器。

在实施中,预设图片处理模块在接收到目标图片的数据流和图片处理参数后,可以调用预设图片处理模块中的各个图片处理单元,按照图片处理参数对目标图片的数据流进行图片处理。以进行缩放处理为例,预设图片处理模块可以调用缩放处理单元,按照相应的缩放信息,对目标图片进行缩放处理。待图片处理完成后,上述预设图片处理模块可以将处理后的数据流,返回给上述在线图片处理器。具体的,服务器可以通过上述预设图片处理模块对外封装的应用程序编程接口,将处理后的数据流返回给上述在线图片处理器。

可选的,可以同时对目标图片进行多种图片处理,相应的处理可以如下:当图片处理参数为多个时,预设图片处理模块按照图片处理参数的数量将数据流复制为多条数据流,并根据每个图片处理参数对每条数据流进行并发处理;预设图片处理模块对并发处理后的各条数据流进行合并,并将合并后的数据流返回至在线图片处理器。

在实施中,对于图片处理请求中包括多个图片处理参数的情形,如果基于原生imagemagick库进行图片处理,则将按照图片处理参数的处理顺序对数据流进行相应处理,同时,为了确保按照上述处理顺序进行处理,在基于每个图片处理参数对数据流进行处理的过程中,还将通过线程锁机制对数据流进行加锁处理,以保证数据的一致性和图片处理结果的准确性,然而上述加锁处理将会降低图片的并发处理效率。这时,可以对imagemagick库的线程锁机制进行优化,降低预设图片处理模块在进行图片处理时占用的系统内存及处理时间。具体的,当图片处理请求中包括多个图片处理参数时,预设图片处理模块可以按照图片处理参数的数量将数据流复制为多条数据流,然后可以根据每个图片处理参数对每条数据流进行并发处理。以三个图片处理参数为例,图片处理参数可以是裁剪参数、缩放参数,水印参数,则预设图片处理模块可以对数据流进行两次复制,以得到三条相同的数据流,分别可以记录为a数据流、b数据流、c数据流,然后预设图片处理模块可以同时对a数据流进行裁剪处理、对b数据流进行缩放处理、对c数据流进行水印处理,以实现并发处理。之后,预设图片处理模块可以对并发处理后的各条数据流进行合并,进而可以将合并后的数据流返回给在线图片处理器。

可选的,可以对数据流的加锁时机进行设置,相应的处理可以如下:当接收到数据流时,预设图片处理模块对数据流进行校验处理;预设图片处理模块在完成校验处理后,对数据流进行加锁,并基于图片处理参数对数据流进行处理。

在实施中,预设图片处理模块可以在对数据流进行校验后,再对数据流进行加锁处理。具体的,预设图片处理模块在接收到目标图片的数据流后,可以对该数据流进行校验处理,例如哈希校验、文件一致性校验等校验处理。预设图片处理模块在完成上述校验处理后,可以对上述数据流进行加锁处理,然后可以基于图片处理参数对加锁的数据流进行图片处理。这样,可以将不必要的校验处理在锁范围内进行剔除,以缩短数据流的加锁时间,减少加锁占用的系统内存,进一步提高图片处理效率

步骤204,服务器基于处理后的数据流生成已处理的目标图片,并将已处理的目标图片返回至客户端。

在实施中,在线图片处理器在接收到处理后的数据流后,可以将处理后的数据流发送给上述服务器。这样,上述服务器可以基于处理后的数据流生成已处理的目标图片,然后将已处理的目标图片返回至客户端。具体的,上述服务器可以将处理后的数据流还原为文件形式的目标图片,然后将已处理的目标图片缓存在服务器中,同时,服务器可以生成已处理的目标图片的缓存地址,然后将该缓存地址返回给客户端。这样,客户端在接收到上述缓存地址后,客户端的网页浏览器可以访问该缓存地址,获取到处理后的目标图片,然后网页浏览器可以将获取的已处理的目标图片在显示界面进行渲染,从而可以将已处理的目标图片呈现给用户。

上述对目标图片进行图片处理的具体过程可以如图3所示。

在本实施例中,服务器接收客户端发送的对目标图片的图片处理请求,获取目标图片的数据流和图片处理参数;服务器的在线图片处理器将数据流和图片处理参数,发送至集成在服务器的操作系统中的预设图片处理模块;预设图片处理模块基于图片处理参数对数据流进行处理,并将处理后的数据流返回至在线图片处理器;服务器基于处理后的数据流生成已处理的目标图片,并将已处理的目标图片返回至客户端。这样,服务器可以将待处理的图片,直接交由预设图片处理模块进行图片处理,由于该预设图片处理模块作为在操作系统中注册的系统服务,可以提高图片的并发处理能力及处理速度。另外,还可以解决因服务器将待处理的图片转发给其他应用服务器进行处理所带来的网络传输消耗问题,进一步降低了图片处理时间,有效提高了图片处理效率。

基于相同的技术构思,本发明实施例还提供了一种服务器,如图4所示,所述服务器安装有在线图片处理器402,其中,所述服务器包括:

获取模块401,用于接收客户端发送的对目标图片的图片处理请求,获取所述目标图片的数据流和图片处理参数;

所述在线图片处理器402,用于将所述数据流和所述图片处理参数,发送至集成在所述服务器的操作系统中的预设图片处理模块403;

所述预设图片处理模块403,用于基于所述图片处理参数对所述数据流进行处理,并将处理后的所述数据流返回至所述在线图片处理器402;

返回模块404,用于基于处理后的所述数据流生成已处理的所述目标图片,并将已处理的所述目标图片返回至所述客户端。

可选的,所述图片处理请求携带有目标图片的网络地址;

所述获取模块401,还用于:

从所述图片处理请求中提取所述目标图片的网络地址,并通过访问所述目标图片的网络地址获取所述目标图片的数据流。

可选的,所述图片处理请求携带有对目标图片的操作命令;

所述获取模块401,还用于:

从所述图片处理请求中提取所述对目标图片的操作命令,将所述操作命令转换为所述图片处理参数。

可选的,所述在线图片处理器402中预先集成有指向所述预设图片处理模块403的应用程序编程接口;

所述在线图片处理器402还用于:

通过所述应用程序编程接口,将所述数据流和所述图片处理参数发送至集成在所述服务器的操作系统中的预设图片处理模块403;

所述返回模块404,还用于:

通过所述应用程序编程接口将处理后的所述数据流返回至所述在线图片处理器402。

可选的,所述预设图片处理模块403基于imagemagick库生成,并以动态链接库的形式集成在所述服务器的操作系统。

可选的,所述预设图片处理模块403,还用于:

当所述图片处理参数为多个时,按照所述图片处理参数的数量将所述数据流复制为多条数据流,并根据每个所述图片处理参数对每条数据流进行并发处理;

对并发处理后的各条数据流进行合并,并将合并后的所述数据流返回至所述在线图片处理器。

可选的,所述预设图片处理模块403,还用于:

当接收到所述数据流时,对所述数据流进行校验处理;

在完成所述校验处理后,对所述数据流进行加锁,并基于所述图片处理参数对所述数据流进行处理。

在本实施例中,服务器接收客户端发送的对目标图片的图片处理请求,获取目标图片的数据流和图片处理参数;服务器的在线图片处理器将数据流和图片处理参数,发送至集成在服务器的操作系统中的预设图片处理模块;预设图片处理模块基于图片处理参数对数据流进行处理,并将处理后的数据流返回至在线图片处理器;服务器基于处理后的数据流生成已处理的目标图片,并将已处理的目标图片返回至客户端。这样,服务器可以将待处理的图片,直接交由预设图片处理模块进行图片处理,由于该预设图片处理模块作为在操作系统中注册的系统服务,可以提高图片的并发处理能力及处理速度。另外,还可以解决因服务器将待处理的图片转发给其他应用服务器进行处理所带来的网络传输消耗问题,进一步降低了图片处理时间,有效提高了图片处理效率。

需要说明的是:上述实施例提供的服务器在进行图片处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的服务器与图片处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1