一种图像合并方法及装置与流程

文档序号:18030817发布日期:2019-06-28 22:38阅读:145来源:国知局
一种图像合并方法及装置与流程

本说明书实施例涉及互联网应用技术领域,尤其涉及一种图像合并方法及装置。



背景技术:

电子设备的显示器的色彩模式为rgb模式,而图像印刷时的色彩模式为cmyk模式,因此,为了避免印刷电子图像时产生色差,需印刷的图像文件一般采用支持cmyk模式的pdf格式。

制作需印刷的pdf图像时,同一图像中可能存在通用部分与定制部分。例如,线下扫码支付场景中的商户收款码图像,如图1所示,不同商户的二维码不同,即图像中的二维码部分为定制部分,而二维码周围作为背景的其他信息一般为通用部分。当需要制作不同商户的收款码图像时,可以通过将定制部分嵌入通用部分的方式,提高制作效率。

现有技术中合并2个pdf格式的图像时,通常需要重新解析、渲染图像,合并效率较低且合并后的文件较大;或者,需要去除合并前图像的部分信息,导致合并后的图像存在信息与色彩的偏差。基于现有技术,需要一种更高效且更准确的图像合并方案。



技术实现要素:

针对上述技术问题,本说明书实施例提供一种图像合并方法及装置,技术方案如下:

一种图像合并方法,该方法包括:

获得背景图像文件中目标页面的对象列表,所述对象列表中包括该页面中各对象的属性信息;所述背景图像文件为pdf格式;

获得目标图像文件的合并需求信息;所述合并需求信息用于表示:所述目标图像文件嵌入所述背景图像文件中的属性信息;

将所述合并需求信息,写入所述目标页面的对象列表,得到合并后的页面对象列表;

解析合并后的页面对象列表,渲染生成将所述目标图像文件嵌入所述背景图像文件后的合并图像。

一种图像合并装置,该装置包括:

列表获得模块,用于获得背景图像文件中目标页面的对象列表,所述对象列表中包括该页面中各对象的属性信息;所述背景图像文件为pdf格式;

需求获得模块,用于获得目标图像文件的合并需求信息;所述合并需求信息用于表示:所述目标图像文件嵌入所述背景图像文件中的属性信息;

列表更新模块,用于将所述合并需求信息,写入所述目标页面的对象列表,得到合并后的页面对象列表;

图像生成模块,用于解析合并后的页面对象列表,渲染生成将所述目标图像文件嵌入所述背景图像文件后的合并图像。

本说明书实施例所提供的技术方案,针对待合并的pdf图像文件,利用pdf格式文件中的页面对象列表,将其中一个图像文件作为页面中的对象,加入另一个图像文件的目标页面中,并对目标页面的对象列表进行更新,从而可以通过更新后(相当于合并后)的页面对象列表,解析、渲染并生成合并后的图像。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。

此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本说明书实施例的已合并图像的通用部分与定制部分示意图;

图2是本说明书实施例的图像合并方法的流程示意图;

图3是本说明书实施例的pdf文件主要结构示意图;

图4是本说明书实施例的pdf文件层级结构示意图;

图5是本说明书实施例的待合并的通用部分与定制部分示意图;

图6是本说明书实施例的图像合并装置的结构示意图;

图7是用于配置本说明书实施例装置的一种设备的结构示意图。

具体实施方式

为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。

现有技术的一种图像合并方案中,需要依次将不同的pdf图像文件解析、渲染到同一介质(如虚拟画布),再将渲染有2个图像的介质内容保存为pdf文件,即可得到合并后的图像文件。显然,这种方案的合并效率较低,合并得到的图像文件也较大。

现有技术的另一种图像合并方案中,可以预先设定某种拼接格式,然后将待合并的2个图像文件按照该格式拼接,通过以较少的信息进行拼接的方式,提高拼接后生成pdf文件的效率,但是这种方案将丢失较多的信息,导致合并后的图像存在信息与色彩的偏差。

针对上述问题,本说明书实施例提供一种图像合并方法,参见图2所示,该方法可以包括以下步骤:

s101,获得背景图像文件中目标页面的对象列表,所述对象列表中包括该页面中各对象的属性信息;所述背景图像文件为pdf格式;

作为一种结构化的文件格式,pdf中的目录、页面、图像等对象均可以通过引用的方式,不按顺序地、任意地出现在pdf文档中,例如,一个pdf文件有3页,第3页可以出现在第1页之前,但通过引用顺序可以时解析后显示的pdf文件中,第1页至第3页顺序出现,从而使pdf文档更具有易读性。

一个pdf文件的主要结构可以如图3所示,文件头中指明了该文件所遵从的pdf规范的版本号,它出现在pdf文件的第一行。文件体又称对象集合,pdf文件的主要部分,即由上述的一系列对象组成。交叉引用表是为了便于对象进行随机存取,而设立的一个地址索引表,一般以偏移加索引的方式储存对象地址。文件尾声明了交叉引用表的地址,并指明了文件体的根目录,从而能够找到pdf文件中各个对象的位置,达到随机访问。

一个pdf文件的层级结构可以如图4所示,通过文件尾指明了根目录,而根目录中引用了页面目录与大纲目录。大纲目录是指pdf文件的书签树;页面目录中包含了pdf文件的页面数及各页面的引用标识。页面对象为pdf中最重要的对象,页面信息中包含如何显示该页面的信息,如包括记录页面中各对象属性信息的对象列表,属性信息可以如使用的字体、包含的内容(文字、图片等)、页面的大小、等等。

本方案中所称的背景图像文件中包括的图像,可以是通用部分,也可以是定制部分,而目标图像文件中包括的图像,则可以是定制部分,也可以是通用部分,本说明书对此并不做限定,需要限定的是背景图像文件为pdf格式的文件,但对目标图像文件的格式不做限定,可以是pdf、jpg、png等格式。

此外,背景图像文件中可以包括多页,而目标图像文件中的图像,可以嵌入其中的某一页,嵌入后可以直接根据合并后得到的图像文件,打印生成需要使用的图像物品。

本方案中在获得背景图像文件中目标页面的对象列表前,可以首先检查文件头,根据文件头中的版本号,确定背景图像文件为pdf格式的文件。还可以检查文件尾,读取文件尾中的信息,确定背景图像文件的完整性。

本方案中在获得背景图像文件中目标页面的对象列表时,可以首先确定背景图像文件中待嵌入目标图像的目标页面,然后通过解析所述背景图像文件的文件尾,获得所述背景图像文件的交叉引用表,例如,可以解析所述背景图像文件的文件尾,根据预设声明字符,确定文件尾中声明的交叉引用表的地址。

从而可以根据所述交叉引用表中所引用的地址,获得所述目标页面的对象列表,例如,解析所述交叉引用表,获得表中记录的所引用对象的地址,并且解析所述背景图像文件的文件尾,获得根目录的引用标识,然后根据所述根目录的引用标识、以及所述交叉引用表中记录的地址,获得所述根目录,根据所述根目录记录的页面信息,获得所述目标页面的对象列表。

作为一个例子,可以解析所述根目录,获得页面目录的引用标识,根据所述页面目录的引用标识、以及所述交叉引用表中记录的地址,获得所述页面目录,所述页面目录中包括:所述背景图像文件中的页面数及各页面的引用标识。根据所述页面目录中目标页面的引用标识,获得所述目标页面的对象列表,例如,解析所述页面目录,获得所述目标页面的引用标识,根据所述目标页面的引用标识、以及所述交叉引用表中记录的地址,获得所述目标页面的页面信息,从而解析所获得的页面信息,获得所述目标页面的对象列表。

s102,获得目标图像文件的合并需求信息;所述合并需求信息用于表示:所述目标图像文件嵌入所述背景图像文件中的属性信息;

s103,将所述合并需求信息,写入所述目标页面的对象列表,得到合并后的页面对象列表;

s104,解析合并后的页面对象列表,渲染生成将所述目标图像文件嵌入所述背景图像文件后的合并图像。

为了便于描述,将s102至s104结合进行说明。

目标图像文件的合并需求信息,可以包括二进制读取目标图像文件得到的二进制信息,通过二进制读取实现对目标图像的引用;也可以包括目标图像文件中的图像嵌入后,在目标页面中的位置、大小、等等信息。将合并需求信息写入目标页面的对象列表后,便可以得到合并后的页面对象列表,该列表中包括的属性信息,描述的便是将通用部分与定制部分合并后的图像。

本方案中将所述合并需求信息,写入所述目标页面的对象列表,得到合并后的页面对象列表后,还可以进一步地根据所述合并后的页面对象列表,更新所述目标页面的页面信息及所述交叉引用表,然后根据所更新的交叉引用表,更新所述文件尾中声明的交叉引用表的地址。此外,对于页面目录、根目录的内容也可以进行更新。当然,在进行更新时,与合并前的背景图像文件中内容相同的部分,可以直接复制原来的内容。

下面结合一个更为具体的实例,对本说明书提供的图像合并方法进行说明。

假设待合并的图像分别如图5中的(a)(b)所示,其中(a)所示的图像包括在pdf格式的背景图像文件中,(b)所示的图像为jpg格式的目标图像文件,需要将(b)图像嵌入(a)图像中。

首先检查背景图像文件的文件头,确定其为pdf文件,并且检查该文件的文件尾,确定该文件的完整性。然后解析文件尾,得到交叉引用表的起点信息,从而获得交叉引用表的位置。

根据上述位置解析并获得交叉引用表的内容,即获得交叉引用表中所记录的,背景图像文件中的对象总数、各对象的引用标识及在文件中的位置。此外,解析文件尾还可以得到根目录的引用标识,并根据交叉引用表中记录的对象引用标识与位置的对应关系,获得根目录的位置。

根据上述位置解析并获得背景图像文件根目录的内容,从而得到页面目录的引用标识,再根据交叉引用表中记录的对象引用标识与位置的对应关系,得到页面目录的位置。

根据上述位置解析并获得页面目录的位置,得到背景图像文件中的页面数及各页面的引用标识,再根据交叉引用表中记录的对象引用标识与位置的对应关系,得到目标页面的位置。

根据上述位置解析并获得目标页面的页面信息,包括页面大小、页面中的图像资源列表及contents列表等。

二进制读取目标图像文件,将读取到的二进制信息作为一个新的对象,追加至图像资源列表中,并将目标图像在目标页面中的位置、变换、大小等绘制信息,追加到contents列表的尾部。

根据追加的内容更新交叉引用表,并重新写入文件尾,在文件尾中重新指明更新后的交叉引用表的位置,得到合并后的pdf文件。通过解析、渲染该pdf文件,即可显示得到合并后的图像(如图1左侧)。

可见,如果采用现有技术的方案,需要对pdf文件中所有对象的解析渲染,包括对图片对象进行解码、对路径对象进行划线、对文字对象进行查询渲染、等等,而应用上述方案,在合并图像时,可以避免对pdf文件中所有对象的解析渲染,直接从语义上追加一个新的图片对象,并且可以保留源文件的所有信息与内容,从而高效且准确地实现pdf格式文件的图像合并。

相应于上述方法实施例,本说明书实施例还提供一种图像合并装置,参见图6所示,该装置可以包括:

列表获得模块110,用于获得背景图像文件中目标页面的对象列表,所述对象列表中包括该页面中各对象的属性信息;所述背景图像文件为pdf格式;

需求获得模块120,用于获得目标图像文件的合并需求信息;所述合并需求信息用于表示:所述目标图像文件嵌入所述背景图像文件中的属性信息;

列表更新模块130,用于将所述合并需求信息,写入所述目标页面的对象列表,得到合并后的页面对象列表;

图像生成模块140,用于解析合并后的页面对象列表,渲染生成将所述目标图像文件嵌入所述背景图像文件后的合并图像。

在本说明书提供的一种具体实施方式中,所述列表获得模块110,可以包括:

页面确定子模块,用于确定背景图像文件中待嵌入目标图像的目标页面;

文件尾解析子模块,用于解析所述背景图像文件的文件尾,获得所述背景图像文件的交叉引用表;

列表获得子模块,用于根据所述交叉引用表中所引用的地址,获得所述目标页面的对象列表。

在本说明书提供的一种具体实施方式中,所述文件尾解析子模块,具体可以用于:

解析所述背景图像文件的文件尾,根据预设声明字符,确定文件尾中声明的交叉引用表的地址;

根据所述交叉引用表的地址,获得所述背景图像文件的交叉引用表。

在本说明书提供的一种具体实施方式中,所述列表获得子模块,可以包括:

引用表解析单元,用于解析所述交叉引用表,获得表中记录的所引用对象的地址;

文件尾解析单元,用于解析所述背景图像文件的文件尾,获得根目录的引用标识;

根目录获得单元,用于根据所述根目录的引用标识、以及所述交叉引用表中记录的地址,获得所述根目录;

列表获得单元,用于根据所述根目录记录的页面信息,获得所述目标页面的对象列表。

在本说明书提供的一种具体实施方式中,所述列表获得单元,可以包括:

根目录解析单元,用于解析所述根目录,获得页面目录的引用标识;

页面目录获得子单元,用于根据所述页面目录的引用标识、以及所述交叉引用表中记录的地址,获得所述页面目录;所述页面目录中包括:所述背景图像文件中的页面数及各页面的引用标识;

列表获得子单元,用于根据所述页面目录中目标页面的引用标识,获得所述目标页面的对象列表。

在本说明书提供的一种具体实施方式中,所述列表获得子单元,具体可以用于:

解析所述页面目录,获得所述目标页面的引用标识;

根据所述目标页面的引用标识、以及所述交叉引用表中记录的地址,获得所述目标页面的页面信息;

解析所获得的页面信息,获得所述目标页面的对象列表。

在本说明书提供的一种具体实施方式中,所述列表更新模块,用于将所述合并需求信息,写入所述目标页面的对象列表,得到合并后的页面对象列表后,还可以用于:

根据所述合并后的页面对象列表,更新所述目标页面的页面信息及所述交叉引用表;

根据所更新的交叉引用表,更新所述文件尾中声明的交叉引用表的地址。

上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的图像合并方法。该方法至少包括:

一种图像合并方法,该方法包括:

获得背景图像文件中目标页面的对象列表,所述对象列表中包括该页面中各对象的属性信息;所述背景图像文件为pdf格式;

获得目标图像文件的合并需求信息;所述合并需求信息用于表示:所述目标图像文件嵌入所述背景图像文件中的属性信息;

将所述合并需求信息,写入所述目标页面的对象列表,得到合并后的页面对象列表;

解析合并后的页面对象列表,渲染生成将所述目标图像文件嵌入所述背景图像文件后的合并图像。

图7示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。

处理器1010可以采用通用的cpu(centralprocessingunit,中央处理器)、微处理器、应用专用集成电路(applicationspecificintegratedcircuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。

存储器1020可以采用rom(readonlymemory,只读存储器)、ram(randomaccessmemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。

输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。

总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的图像合并方法。该方法至少包括:

一种图像合并方法,该方法包括:

获得背景图像文件中目标页面的对象列表,所述对象列表中包括该页面中各对象的属性信息;所述背景图像文件为pdf格式;

获得目标图像文件的合并需求信息;所述合并需求信息用于表示:所述目标图像文件嵌入所述背景图像文件中的属性信息;

将所述合并需求信息,写入所述目标页面的对象列表,得到合并后的页面对象列表;

解析合并后的页面对象列表,渲染生成将所述目标图像文件嵌入所述背景图像文件后的合并图像。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

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