图片的生成方法及装置与流程

文档序号:13138633阅读:226来源:国知局
图片的生成方法及装置与流程

本申请涉及图像处理技术领域,尤其涉及一种图片的生成方法及装置。



背景技术:

传统技术中,在生成目标图片时,首先在内存中加载或者生成一张底图;之后在底图上绘制更多图片信息,直至在内存中形成完整的图片信息;最后根据内存中完整的图片信息,生成目标图片。然而当目标图片比较大时,上述在内存中保存的完整的图片信息会占用大量的内存空间,如,在目标图片为1024x1024的真彩色图片时,会占用超过4兆字节内存空间,这极大地耗费了计算机的内存资源。



技术实现要素:

本申请实施例提供了一种图片的生成方法及装置,可以达到节约计算机的内存资源的目的。

第一方面,提供了一种图片的生成方法,该方法包括:

接收图片生成请求,所述图片生成请求包括待生成图片的图片格式;

根据接收的图片生成请求,获取对应的静态图片;

根据所述图片格式,确定所述待生成图片的多个待生成子图片;

获取各待生成子图片的描述信息,并根据所述描述信息,对所述多个待生成子图片进行排序;

对排序后的多个待生成子图片中的第一个待生成子图片,根据所述第一个待生成子图片的描述信息、预设的图片生成算法以及所述静态图片,生成第一个子图片;

对所述第一个子图片进行预处理,将预处理后的第一个子图片添加到符合所述图片格式的图片文件中;

按照对所述第一个子图片的生成、预处理以及添加方式,依次对排序后的多个待生成子图片中的其它待生成子图片进行生成、预处理以及添加操作,直至获得所述待生成图片。

第二方面,提供了一种图片的生成装置,该装置包括:

接收单元,用于接收图片生成请求,所述图片生成请求包括待生成图片的图片格式;

获取单元,用于根据所述接收单元接收的图片生成请求,获取对应的静态图片;

确定单元,用于根据所述图片格式,确定所述待生成图片的多个待生成子图片;

排序单元,用于获取所述确定单元确定的各待生成子图片的描述信息,并根据所述描述信息,对所述多个待生成子图片进行排序;

生成单元,用于对所述排序单元排序后的多个待生成子图片中的第一个待生成子图片,根据所述第一个待生成子图片的描述信息、预设的图片生成算法以及所述静态图片,生成第一个子图片;

预处理单元,用于对所述生成单元生成的所述第一个子图片进行预处理,将预处理后的第一个子图片添加到符合所述图片格式的图片文件中;

所述获取单元,还用于按照对所述第一个子图片的生成、预处理以及添加方式,依次对排序后的多个待生成子图片中的其它待生成子图片进行生成、预处理以及添加操作,直至获得所述待生成图片。

本申请提供的图片的生成方法及装置,根据待生成图片的图片格式,确定待生成图片的各个待生成子图片的描述信息,并根据该描述信息,对各个待生成子图片进行排序;之后按照顺序依次生成各个子图片,其中,在按照顺序依次生成各个子图片的过程中,每生成一个子图片,就将该子图片进行预处理后添加到图片文件中;当图片文件中保存了所有的子图片时,所有的子图片构成了待生成图片。由此可以看出,本申请是按照顺序依次生成各个子图片,也即在内存中只需保存一个子图片的信息,从而避免了现有技术中需要在内存中保存待生成图片的完整信息而浪费计算机的内存资源的问题。

附图说明

图1为本申请提供的图片合成装置示意图;

图2为本申请一种实施例提供的图片的生成方法流程图;

图3为本申请提供的待生成子图片的示意图;

图4为本申请另一种实施例提供的图片的生成装置示意图。

具体实施方式

下面结合附图,对本发明的实施例进行描述。

本申请提供的图片的生成方法及装置适用于生成占用大容量存储空间的图片,尤其适用于在服务端上生成占用大容量存储空间的图片,其中,服务端对应多个客户端,即服务端为多个客户端提供生成图片的服务。需要说明的是,上述生成方法生成的图片的图片格式包括但不限于jpeg、tiff、raw、bmp、gif、png等。

本申请的图片的生成方法可以由图1所示的图片合成装置执行,该图片合成装置可以运行在服务端,如支付宝系统的服务端。图1中,包括:图片素材存储模块101、图片生成服务模块102、合成模式决策模块103、区块生成模块104、区块存储模块105、区块编码压缩模块106以及文件生成模块107。

图片素材存储模块101用于存储静态图片,如,背景图片、前景图片以及静态文字等;可以理解的是,当图片合成装置为不同的客户端生成不同格式的图片时,上述静态图片通常是可以共用的。

图片生成服务模块102用于接收客户端发送的图片生成请求,该图片生成请求中可以包括待生成图片的图片格式,并根据图片生成请求,从图片素材存储模块101中读取对应的静态图片;如,当客户端的用户想生成以第一图片为背景图片,并以第二图片为前景图片的目标图片时,则客户端向图片合成装置发送的图片生成请求中还可以包括第一图片的名称以及第二图片的名称,从而由图片生成服务模块102根据第一图片的名称和第二图片的名称,从图片素材存储模块101获取上述第一图片和第二图片。

合成模式决策模块103用于根据待生成图片的图片格式,来判断是否可以分块生成待生成图片;若可以分块生成待生成图片,则还用于确定分块后的待生成图片的描述信息,此处,分块后的待生成图片也可以称为待生成子图片,待生成子图片的描述信息可以包括待生成子图片中包含的像素的个数以及待生成子图片中各个像素所在的位置信息。举例来说,假设待生成图片为1024x1024的png图片,则合成模式决策模块103的判断结果为可以分块生成待生成图片,且每个待生成子图片中包含1024个像素,且该1024个像素为一行,如均为第一行或者第二行等。再例如,假设待生成图片为1024x1024的jpeg图片,因为jpeg格式图片是分格显示的,因此还可以假设该待生成图片包括64x64个方格,且每个方格包含16x16个像素,则合成模式决策模块103的判断结果为可以分块生成待生成图片,且每个待生成子图片中包含16x16个像素,也即每个待生成子图片包含一个方格的像素。此外,合成模式决策模块103还用于存储预设的图片生成算法,该预设的图片算法用于生成待生成子图片中的每个像素。在一个例子中,当要生成包含用户信息的二维码图片时,可以结合与用户信息对应的二维码编码信息及预设的图片生成算法,来生成待生成子图片中的每个像素。此处,二维码编码信息可以是由图片生成服务模块102根据用户信息生成的,其中定义了待生成图片中至少一个像素的位置以及颜色(如,黑或白)等。

区块生成模块104用于生成每个待生成子图片中的像素。具体地,区块生成模块104可以先接收图片生成服务模块102转发的图片生成请求和静态图片,之后向合成模式决策模块103发送访问请求,以获取每个待生成子图片的描述信息以及预设的图片生成算法,之后根据各个待生成子图片的描述信息、预设的图片生成算法以及上述静态图片,依次生成每个子图片。

区块存储模块105用于存储区块生成模块104在生成每个子图片时生成的每个像素,当一个子图片的所有像素生成完成时,也即当区块存储模块105中存储了一个子图片的所有像素时,区块存储模块105将一个子图片的所有像素发送给区块编码压缩模块106。需要说明的是,在区块存储模块105将一个子图片的所有像素发送给编码压缩模块106之后,则该区块存储模块105可以用于存储下一个子图片的各个像素,也即本申请的区块存储模块105可以被重复利用,从而有效利用了计算机的内存资源。

区块编码压缩模块106用于根据待生成图片的图片格式,对子图片进行编码、压缩处理,此处,根据待生成图片的图片格式,对图片进行编码、压缩处理是传统的常用技术,在此不复赘述。对子图片进行编码、压缩处理之后,区块编码压缩模块106将编码、压缩处理后的子图片发送给文件生成模块107。

文件生成模块107用于在初始时生成符合待生成图片的图片格式的图片文件,可以理解的是,该图片文件只包含了待生成图片的图片格式的描述信息,还没有包含任何的像素;之后每次在接收到区块编码压缩模块106发送的编码、压缩处理后的子图片时,将该编码、压缩处理后的子图片添加到上述图片文件中。当文件生成模块107将所有的子图片添加到图片文件中时,向图片文件中追加必要的信息(如,安全校验信息或者完整性校验信息等);之后就可以生成待生成图片。

上述图片合成装置生成图片的方法可参见图2所示,图2中,所述方法具体可以包括:

步骤210,接收图片生成请求,该图片生成请求包括待生成图片的图片格式。

此处的图片生成请求可以是由客户端发送的。

步骤220,根据接收的图片生成请求,获取对应的静态图片。

此处的静态图片是指存储在图片素材存储模块101中的图片,其包含了生成多数待生成图片所需的静态信息,如,其可以为背景图片、前景图片或者logo图片等。

具体地,当客户端的用户要生成图片时,可以向图片生成服务模块102发送图片生成请求,该图片生成请求包括待生成图片的图片格式,其中,图片格式可以为jpeg、tiff、raw、bmp、gif、png等。在一个例子中,当支付客户端的用户想要生成包含用户信息的指定格式的二维码图片(如,png格式的二维码图片)时,可以向图片生成服务模块102发送图片生成请求,则上述图片生成请求还可以包括用户信息(如,用户账号和用户头像)。图片生成服务模块102在接收到包括用户信息的图片生成请求之后,根据用户信息生成对应的二维码编码信息。此外,图片生成请求还可以包括背景图片和/或者前景图片的名称,若图片生成请求中包括了背景图片和/或者前景图片的名称,则根据背景图片和/或者前景图片的名称,从图片素材存储模块101中获取对应的背景图片和/或者前景图片;否则,直接从图片素材存储模块101中获取默认的背景图片和/或者前景图片。

步骤230,根据图片格式,确定待生成图片的多个待生成子图片。

此处,待生成子图片是由待生成图片划分的。在一个例子中,当待生成图片为包含用户信息的png格式的二维码图片时,确定的多个待生成图片可以如图3所示,图3中,确定了5个待生成子图片,每个待生成子图片为待生成图片中的一行像素。

步骤240,获取各待生成子图片的描述信息,并根据描述信息,对多个待生成子图片进行排序。

待生成子图片的描述信息包括:待生成子图片中包含的像素的个数以及待生成子图片中各个像素所在的位置信息。

图1中的图片生成服务模块102在从图片素材存储模块101中获取到对应的静态图片之后,可以向区块生成模块104转发上述待生成图片的图片格式、静态图片以及二维码编码信息;之后区块生成模块104可以向合成模式决策模块103发送访问请求,该访问请求可以包括待生成图片的图片格式;合成模式决策模块103根据待生成图片的图片格式,来判断是否可以分块生成待生成图片;若可以分块生成待生成图片,则确定多个待生成图片,并获取各待生成图片的描述信息。举例来说,假设待生成图片为1024x1024的png图片,则合成模式决策模块103的判断结果为可以分块生成待生成图片。具体的,总共可以确定出1024个待生成子图片,每个待生成子图片中包含1024个像素,且该1024个像素为一行(如,为第1行或者第2行等);之后可以对该1024个待生成子图片进行排序,如,可以按照每个待生成子图片中包含的像素所在的行,对1024个待生成子图片进行排序,排序后的各待生成子图片分别对应待生成图片的第1行、第2行、…、第1024行。

再例如,假设待生成图片为1024x1024的jpeg图片,因为jpeg格式图片是分格显示的,因此还可以假设该待生成图片包括64x64个方格,且每个方格包含16x16个像素,则合成模式决策模块103的判断结果为可以分块生成待生成图片。具体的,总共可以划分为64个待生成子图片,每个待生成子图片中包含16x16个像素,也即每个待生成子图片包含一个方格的像素;之后可以对该64个待生成子图片进行排序,如,可以按照每个待生成子图片中包含的像素所在方格的位置,对64个待生成子图片进行排序,排序后的各待生成子图片分别对应待生成图片中按照从上到下,从左到右排列的第1个方格、第2个方格、…、第64个方格。

合成模式决策模块103在对多个待生成子图片排序之后,可以将排序后的各个待生成子图片的描述信息以及预设的图片生成算法发送给区块生成模块104。

步骤250,对排序后的多个待生成子图片中的第一个待生成子图片,根据第一个待生成子图片的描述信息、预设的图片生成算法以及静态图片,生成第一个子图片。

需要说明的是,第一个待生成子图片可以为排在最前面的待生成子图片。

可以理解的是,待生成图片通常包含了多个像素(如,1024x1024个像素),则上述预设的图片生成算法可以是定义了每个像素的生成方法。以生成第一像素为例来说,此处,第一像素可以为任一像素,预设的图片生成算法可以定义如下:

根据第一像素的位置信息,从前景图片中读取相应位置的前景像素,将读取的前景像素作为第一像素;或者,根据第一像素的位置信息,从背景图片中读取相应位置的背景像素,将读取的背景像素作为第一像素;或者,根据第一像素的位置信息,从前景图片中读取相应位置的前景像素,并从背景图片中读取相应位置的背景像素,将融合后的前景像素和背景像素作为第一像素。需要说明的是,上述前景像素是指前景图片中的一个像素,而背景像素是指背景图片中的一个像素。

步骤250中根据第一个待生成子图片的描述信息、预设的图片生成算法以及静态图片,生成第一个子图片具体可以为:根据第一个待生成子图片的描述信息,读取第一个待生成子图片中第一像素所在的位置信息;根据位置信息,从静态图片中读取相应位置的像素,并根据相应位置的像素以及预设的图片生成算法,确定第一像素;依次类推,直至确定出第一个待生成子图片中的每个像素,从而生成第一个子图片。

在实际应用中,可以结合相应的描述文件(如,上述二维码编码信息)来生成上述第一像素,此处,描述文件中定义了待生成图片中至少一个像素的位置以及颜色等。

以生成包含用户信息的1024x1024的png格式的二维码图片为例来说,

合成模式决策模块103确定的第一个待生成子图片可以包含第1行的像素,即可以包含1024个像素;且假设二维码编码信息中第一个待生成子图片的各像素定义如下:第1行第1个:黑色;第1行第2个:白色;…;第1行第1024个:白色。当生成第1行第1个像素时,也即在生成第一个待生成子图片中的第1个像素时,从前景图片中读取第1行第1个前景像素,将该第1行第1个前景像素作为第一个待生成子图片中的第1个像素;当生成第1行第2个像素时,也即在生成第一个待生成子图片中的第2个像素时,从背景图片中读取第1行第2个背景像素,将第1行第2个背景像素作为第一个待生成子图片中的第2个像素;…;直至确定第一个待生成子图片中第1024个像素。可以理解的是,在第1024个像素生成之后,也即在第一个待生成子图片的最后一个像素生成之后,即生成了第一个子图片。

需要说明的是,步骤250中,区块生成模块104每生成子图片中的一个像素,都将该像素存储在区块存储模块105中,直至区块存储模块105中存储了一个子图片中的所有像素,如前述例子,直至区块存储模块105中存储了1024个像素;之后区块生成模块104将一个子图片的所有像素以及待生成图片的格式发送给区块压缩模块106。可以理解的是,当区块生成模块104将一个子图片的所有像素发送给区块压缩模块106之后,区块存储模块105可以用于存储下一个子图片的所有像素,也即本申请中的区块存储模块105是可以被重复利用的,从而提高了内存资源的利用率;此外,本申请中的区块存储模块105只用于存储一个子图片的所有像素,而无需存储整个图片的完整信息,所以大大节约了计算机的内存资源。

步骤260,对第一个子图片进行预处理,将预处理后的第一个子图片添加到符合图片格式的图片文件中。

此处的预处理可以包括编码、压缩处理等。

可以理解的是,为了减小图片的存储空间,存储在计算机外部存储空间上的图片通常都是经过编码、压缩处理的。而不同图片格式的图片其编码、压缩处理的方式可能都不相同。具体地,区块压缩模块106在接收到第一个子图片的所有像素以及待生成图片的图片格式之后,可以根据待生成图片的图片格式,对第一个子图片进行编码、压缩处理,其中,不同图片格式的图片的编码、压缩处理过程属于传统的常用技术,在此不复赘述。

区块压缩模块106在对第一个子图片进行编码、压缩处理之后,将编码、压缩处理之后的第一个子图片以及待生成图片的图片格式发送给文件生成模块107。可以理解的是,文件生成模块107可以在初始时生成符合待生成图片的图片格式的图片文件,该图片文件只包含了待生成图片的图片格式的描述信息,还没有包含任何的像素;之后每次在接收到区块编码压缩模块106发送的编码、压缩处理后的子图片时,将该编码、压缩处理后的子图片添加到上述图片文件中。

可以理解的是,此处的编码、压缩处理后的子图片是存储在外部存储空间(如,磁盘)的,其不再占用内存空间。由此,节约了计算机的内存资源。

步骤270,按照对第一个子图片的生成、预处理以及添加方式,依次对排序后的多个待生成子图片中的其它待生成子图片进行生成、预处理以及添加操作,直至获得待生成图片。

如前述例子,按照第一个子图片的生成方法,可以生成第二个子图片(包含第2行的1024个像素);之后再对第二个子图片进行预处理,并将预处理后的第二个子图片添加到上述图片文件中;依次类推,直至生成第1024个子图片,并将预处理后的第1024个子图片添加到上述图片文件中。当文件生成模块107将所有的子图片添加到图片文件中时,向图片文件中追加必要的信息(如,安全校验信息或者完整性校验信息等);之后便生成了待生成图片。

本申请提供的图片的生成方法,根据待生成图片的图片格式,确定待生成图片的各个待生成子图片的描述信息,并根据该描述信息,对各个待生成子图片进行排序;之后按照顺序依次生成各个子图片,其中,在按照顺序依次生成各个子图片的过程中,每生成一个子图片,就将该子图片进行预处理后添加到图片文件中;当图片文件中保存了所有的子图片时,所有的子图片构成了待生成图片。由此可以看出,本申请是按照顺序依次生成各个子图片,也即在内存中只需保存一个子图片的信息,从而避免了现有技术中需要在内存中保存待生成图片的完整信息而浪费计算机的内存资源的问题。

与上述图片的生成方法对应地,本申请实施例还提供的一种图片的生成装置,如图4所示,该装置包括:

接收单元401,用于接收图片生成请求,该图片生成请求包括待生成图片的图片格式。

获取单元402,用于根据接收单元401接收的图片生成请求,获取对应的静态图片。

确定单元403,用于根据图片格式,确定待生成图片的多个待生成子图片。

排序单元404,用于获取确定单元403确定的各待生成子图片的描述信息,并根据描述信息,对多个待生成子图片进行排序。

其中,描述信息可以包括:待生成子图片中包含的像素的个数以及待生成子图片中各个像素所在的位置信息。

生成单元405,用于对排序单元404排序后的多个待生成子图片中的第一个待生成子图片,根据第一个待生成子图片的描述信息、预设的图片生成算法以及静态图片,生成第一个子图片。

生成单元405具体用于:

根据第一个待生成子图片的描述信息,读取第一个待生成子图片中第一像素所在的位置信息;根据位置信息,从静态图片中读取相应位置的像素,并根据相应位置的像素以及预设的图片生成算法,确定第一像素;依次类推,直至确定出第一个待生成子图片中的每个像素,从而生成第一个子图片。

预处理单元406,用于对生成单元405生成的第一个子图片进行预处理,将预处理后的第一个子图片添加到符合图片格式的图片文件中。

获取单元402,还用于按照对第一个子图片的生成、预处理以及添加方式,依次对排序后的多个待生成子图片中的其它待生成子图片进行生成、预处理以及添加操作,直至获得待生成图片。

可选地,静态图片包括前景图片和/或背景图片;

上述根据位置信息,从静态图片中读取相应位置的像素,并根据相应位置的像素以及预设的图片生成算法,确定第一像素,具体为:

根据位置信息,从前景图片中读取相应位置的前景像素,将前景像素作为第一像素;或者,

根据位置信息,从背景图片中读取相应位置的背景像素,将背景像素作为第一像素;或者,

根据位置信息,从前景图片中读取相应位置的前景像素,并从背景图片中读取相应位置的背景像素,将融合后的前景像素和背景像素作为第一像素。

可选地,图片生成请求还可以包括用户信息;

生成单元405还具体用于:

根据用户信息,生成二维码编码信息;

根据第一个待生成子图片的描述信息、预设的图片生成算法、静态图片以及二维码编码信息,生成第一个子图片。

本申请实施例装置的各功能模块的功能,可以通过上述方法实施例的各步骤来实现,因此,本申请提供的装置的具体工作过程,在此不复赘述。

本申请实施例提供的图片的生成方法及装置,接收单元401接收图片生成请求,该图片生成请求包括待生成图片的图片格式;获取单元402根据接收的图片生成请求,获取对应的静态图片;确定单元403根据图片格式,确定待生成图片的多个待生成子图片;排序单元404获取各待生成子图片的描述信息,并根据描述信息,对多个待生成子图片进行排序;生成单元405对排序后的多个待生成子图片中的第一个待生成子图片,根据第一个待生成子图片的描述信息、预设的图片生成算法以及静态图片,生成第一个子图片;预处理单元406对第一个子图片进行预处理,将预处理后的第一个子图片添加到符合图片格式的图片文件中;获取单元402按照对第一个子图片的生成、预处理以及添加方式,依次对排序后的多个待生成子图片中的其它待生成子图片进行生成、预处理以及添加操作,直至获得待生成图片。由此,达到了节约计算机的内存资源的目的。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的对象及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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