发明内容
本申请实施例提供了一种图片处理方法及装置,用以对图片进行处理,处理后的图片与终端显示屏幕的尺寸相匹配,且处理后的图片中保留完整的图片信息,无失真。
第一方面,本申请实施例提供一种图片处理方法,该方法的执行主体可以为服务器,或者为终端。该方法包括:获取第一图片,第一图片包括至少两个图层,第一图片用于在终端上显示,第一图片的尺寸与终端显示屏幕的尺寸不匹配;为至少两个图层中的任意两个图层配置锚点,得到锚点集合,其中,锚点用于确定任意两个图层之间的相对位置;根据终端显示屏幕的尺寸拉伸或压缩第一图层,拉伸或压缩后的第一图层的宽高比与终端显示屏幕的宽高比相同,其中,第一图层为至少两个图层中部分或全部元素图像被遮挡的一个或多个图层;以及根据锚点集合,重组第二图层以及拉伸或压缩后的第一图层,得到第二图片,该第二图片在终端显示时,该第二图片的尺寸与终端显示屏幕的尺寸匹配,其中,第二图层为至少两个图层中元素图像未被遮挡的一个或多个图层。
本申请实施例中,第一图片与终端显示屏幕的尺寸不匹配,通过对第一图层进行拉伸或压缩处理,再基于锚点集合重组第二图层与拉伸或压缩后的第一图层,可得到包括完整图像信息的第二图片,且第二图片与终端显示屏幕的尺寸相匹配。一方面,第一图层为第一图片中部分或全部元素图像被遮挡的图层,意味着第一图层所包括的主体显著性特征较少,不易引起用户的注意,如纯色的背景元素,对其进行拉伸或压缩处理以匹配终端显示屏幕的尺寸的过程中,不会出现形变或失真的问题;另一方面,由于锚点是相对于图片参考坐标系中不变的一个坐标,可用于确定两个图层之间的相对位置,所以,通过锚点集合重组第二图层和拉伸或压缩后的第一图层,可以保证重组前后任意两个图层之间的相对位置不变。从视觉感官上来讲,重组前后,任意两个图层之间的相对位置没有发生变化,从而可以避免第一图片变换后所导致的失真的问题。
在一种可能的设计中,任意两个图层包括第三图层和第四图层,为至少两个图层中的任意两个图层配置锚点,包括:确定第三图层与第四图层之间的距离;以及根据第三图层与第四图层之间的距离,为第三图层和第四图层配置锚点。
在上述设计中,通过第三图层与第四图层之间的距离为第三图层和第四图层配置锚点,可以保证重组前后,第三图层与第四图像之间的相对位置不变。例如,可以通过第三图层中的各像素点的坐标,以及第四图层中的各像素点的坐标,计算第三图层与第四图层之间的赫斯多夫距离,再基于第三图层与第四图层之间的赫斯多夫距离,为第三图层和第四图层配置锚点,以确保第三图层与第四图层在重组前后的相对位置不变。
在一种可能的设计中,根据第三图层与第四图层之间的距离,为第三图层和第四图层配置锚点,包括:在第三图层与第四图层之间的距离等于0的情况下,根据第三图层与第四图层之间的位置关系,为第三图层和第四图层配置锚点;或者,在第三图层与第四图层之间的距离满足第一预设条件的情况下,根据第一像素对为第三图层和第四图层配置锚点,其中,所述第一像素对为第三图层与第四图层之间、满足所述第一预设条件的一对或多对像素点,所述第一预设条件为大于0且小于第一阈值;或者,在第三图层与第四图层之间的距离大于第一阈值的情况下,确定第一图层的中心点和第四图层的中心点、为第三图层与第四图层之间的锚点。
在上述设计中,通过将第三图层与第四图层之间的距离分为三类,根据不同的距离类别采用不同的技术方案为第三图层和第四图层之间的锚点,以确保重组前后第三图层与第四图层之间的相对位置不变。例如,第三图层与第四图层之间的距离为0,意味着第三图层与第四图层之间的位置关系可以是接触关系、或相交关系、或包含关系,因此可以基于位置关系为第三图层与第四图层配置锚点。例如,第三图层与第四图层之间的距离大于0且小于第一阈值,该第一阈值为很小的正数,意味着第三图层与第四图层趋近接触但未接触的状态,在此情况下,可以基于第一像素对为第三图层与第四图层配置锚点。再例如,第三图层与第四图层之间的距离大于第一阈值,意味着第三图层与第四图层相隔一定的距离,在此情况下,可以将第三图层的中心点和第四图层的中心点作为锚点。
在一种可能的设计中,根据第三图层与第四图层之间的位置关系,为第三图层和第四图层配置锚点,包括:在第三图层与第四图层相接触的情况下,确定第三图层与第四图层之间的接触点、为第三图层与第四图层之间的锚点;或者,在第三图层与第四图层相交的情况下,确定第三图层与第四图层的相交区域中的中心点、为第三图层与第四图层之间锚点;或者,在第三图层包含第四图层的情况下,确定第三图层的中心点、为第三图层与第四图层之间的锚点。
在上述设计中,在第三图层与第四图层之间的距离的情况下,可以基于第三图层与第四图层的位置关系为第三图层和第四图层配置锚点,以确保重组前后两者的相对位置不变。例如,以接触点为锚点,可以确保重组后的第三图层与第四图层仍然为接触关系。例如,以相交区域内的中心点为锚点,可以确保重组后的第三图层与第四图层仍然为相交关系,且两者相对锚点的位置不变。再例如,第三图层包含第四图层,以第三图层的中心点为锚点,可以确保重组后第三图层仍然包含第四图层,且两者相对锚点的位置不变。
在一种可能的设计中,根据第一像素对为第三图层和第四图层配置锚点,包括:在第一像素对为一对像素点的情况下,确定一对像素点的中心点、为第三图层和第四图层之间的锚点;或者,在第一像素对为多对像素点,且多对像素点中每对像素点之间的距离不同的情况下,确定多对像素点中距离最小的一对像素点的中心点、为第三图层与第四图层之间的锚点;或者,在第一像素对为多对像素点,且多对像素点中每对像素点之间的距离相同的情况下,确定多对像素点的中心点、为第三图层与第四图层之间的锚点。
在上述设计中,在第三图层与第四图层之间的距离满足第一预设条件的情况下,可以基于第一像素对为第三图层和第四图层配置锚点,以确保重组前后第三图层与第四图层之间的相对位置不变。
在一种可能的设计中,根据锚点集合,重组拉伸或压缩后的第一图层以及第二图层,得到第二图片,包括:根据锚点集合,重组拉伸或压缩后的第一图层以及第二图层,得到重组后的第一图片,重组后的第一图片的宽高比与终端显示屏幕的宽高比相同;根据终端显示屏幕的尺寸等比例缩小或放大重组后的第一图片,得到第二图片。
在上述设计中,重组后的第一图片中,第二图层的尺寸未变,拉伸或压缩后的第一图层的宽高比与终端显示屏幕的宽高比相同,也就是说,重组后的第一图片的宽高比与终端显示屏幕的宽高比相同。进一步,重组后的第一图片的尺寸与终端显示屏幕的尺寸可能相同,也可能不同。例如,如果重组后的第一图片的尺寸与终端显示屏幕的尺寸相同,则第二图片可以为该重组后的第一图片。再例如,如果重组后的第一图片的尺寸与终端显示屏幕的尺寸不同,则可以基于终端显示屏幕的尺寸对重组后的第一图片进行等比例缩小或放大处理,得到与终端显示屏幕的尺寸相匹配的第二图片,该等比例缩小或放大可以确保图像信息的完整性,并且不会引入额外的失真或形变。
在一种可能的设计中,该方法还可以包括:确定第一图片的可裁剪区域,可裁剪区域为第一图片中除了最小外接水平矩形之外的区域,最小外接水平矩形为包括第二图层的最小水平矩形;根据终端显示屏幕的尺寸,确定第一裁剪区域,第一裁剪区域为使得裁剪后的第一图片的宽高比与终端显示屏幕的宽高比相同所需要裁剪的最小区域;确定第一裁剪区域位于第一图片的可裁剪区域之外。
在上述设计中,通过第一图片的可裁剪区域以及第一裁剪区域,可以确定是否可以对第一图片直接进行裁剪,兼容性好。由于第一图片的可裁剪区域为第一图片中除了最小外接水平矩形之外区域,该最小外接水平矩形为包括第二图层的最小水平矩形,第二图层的元素图像未被遮挡,意味着第二图层包括较多的主体显著性特征,容易引起用户的注意,也就是说第一图片的可裁剪区域不包括主体显著性特征或者包括较少的主体显著性特征,即使将第一图片的可裁剪区域全部裁剪掉,也不会丢失图片内容。而第一裁剪区域为使得裁剪后的第一图片的宽高比与中终端显示屏幕的宽高比相同所需要裁剪的最小区域,所以,如果第一裁剪区域位于第一图片的可裁剪区域内,则可以直接在第一图片的可裁剪区域中裁剪掉第一裁剪区域,即在不丢失图片信息的情况下使得裁剪后的第一图片的宽高比与终端显示屏幕的宽高比相同。如果第一裁剪区域位于第一图片的可裁剪区域之外,若直接在第一图片中裁剪掉第一裁剪区域,即便裁剪后的第一图片的宽高比与终端显示屏幕的宽高比相同,但会丢失图片信息,出现失真的问题。
其中,第一裁剪区域位于第一图片的可裁剪区域之外可以指,在宽度方向上裁剪时,第一裁剪区域的宽度值大于第一图片的可裁剪区域的宽度值,或者,在高度方向上裁剪时,第一裁剪区域的高度值大于第一图片的可裁剪区域的高度值。
第二方面,本申请实施例提供一种图片处理装置,该装置可具有实现上述第一方面或第一方面的任一种可能的设计中的功能。上述图片处理装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,所述硬件或软件包括一个或多个与上述功能相对应的模块。该装置可以包括:获取单元,配置单元,拉伸单元以及重组单元。
其中,获取单元,用于获取第一图片,第一图片包括至少两个图层,第一图片用于在终端上显示,第一图片的尺寸与终端显示屏幕的尺寸不匹配;
配置单元,用于为至少两个图层中的任意两个图层配置锚点,得到锚点集合,其中,锚点用于确定任意两个图层之间的相对位置;
拉伸单元,用于根据终端显示屏幕的尺寸拉伸或压缩第一图层,拉伸或压缩后的第一图层的宽高比与终端显示屏幕的宽高比相同,其中,第一图层为至少两个图层中部分或全部元素图像被遮挡的一个或多个图层;
重组单元,用于根据锚点集合,重组第二图层以及拉伸或压缩后的第一图层,得到第二图片,第二图片在终端显示时,该第二图片的尺寸与终端显示屏幕的尺寸匹配;其中,第二图层为至少两个图层中元素图像未被遮挡的一个或多个图层。
在一种可能的设计中,任意两个图层包括第三图层和第四图层,配置单元,具体用于:
确定第三图层与第四图层之间的距离;
根据第三图层与第四图层之间的距离,为第三图层和第四图层配置锚点。
在一种可能的设计中,配置单元,具体用于:
在第三图层与第四图层之间的距离等于0的情况下,根据第三图层与第四图层之间的位置关系,为第三图层和第四图层配置锚点;或者,
在第三图层与第四图层之间的距离满足第一预设条件的情况下,根据第一像素对为第三图层和第四图层配置锚点,其中,第一像素对为第三图层与第四图层之间、满足第一预设条件的一对或多对像素点,第一预设条件为大于0且小于第一阈值;或者,
在第三图层与第四图层之间的距离大于第一阈值的情况下,确定第一图层的中心点和第四图层的中心点、为第三图层与第四图层之间的锚点。
在一种可能的设计中,配置单元,具体用于:
在第三图层与第四图层相接触的情况下,确定第三图层与第四图层之间的接触点、为第三图层与第四图层之间的锚点;或者,
在第三图层与第四图层相交的情况下,确定第三图层与第四图层的相交区域中的中心点、为第三图层与第四图层之间锚点;或者,
在第三图层包含第四图层的情况下,确定第三图层的中心点、为第三图层与第四图层之间的锚点。
在一种可能的设计中,配置单元,具体用于:
在第一像素对为一对像素点的情况下,确定一对像素点的中心点、为第三图层和第四图层之间的锚点;或者,
在第一像素对为多对像素点,且多对像素点中每对像素点之间的距离不同的情况下,确定多对像素点中距离最小的一对像素点的中心点、为第三图层与第四图层之间的锚点;或者,
在第一像素对为多对像素点,且多对像素点中每对像素点之间的距离相同的情况下,确定多对像素点的中心点、为第三图层与第四图层之间的锚点。
在一种可能的设计中,重组单元,具体用于:
根据锚点集合,重组拉伸或压缩后的第一图层以及第二图层,得到重组后的第一图片,重组后的第一图片的宽高比与终端显示屏幕的宽高比相同;
根据终端显示屏幕的尺寸等比例缩小或放大重组后的第一图片,得到第二图片。
在一种可能的设计中,该图片处理装置还包括确定单元,该确定单元用于:
确定第一图片的可裁剪区域,可裁剪区域为第一图片中除了最小外接水平矩形之外的区域,最小外接水平矩形为包括第二图层的最小水平矩形;
根据终端显示屏幕的尺寸,确定第一裁剪区域,第一裁剪区域为使得裁剪后的第一图片的宽高比与终端显示屏幕的宽高比相同所需要裁剪的最小区域;
确定第一裁剪区域位于第一图片的可裁剪区域之外。
其中,第二方面或第二方面的任一种设计的有益效果可参考第一方面或第一方面的任一种设计的有益效果,在此不再赘述。
第三方面,本申请实施例提供一种图片处理装置,该图片处理装置可具有实现上述第一方面或第一方面的任一种可能的设计中的功能。上述图片处理装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现,所述硬件或软件包括一个或多个与上述功能相对应的模块。
该图片处理装置的结构中可以包括至少一个处理器,还可以包括至少一个存储器。至少一个处理器与至少一个存储器耦合,可用于执行存储器中存储的计算机程序指令,以使图片处理装置执行上述第一方面或第一方面的任一种可能的设计中的方法。
在一种可能的设计中,该图片处理装置还可以包括通信接口,处理器与通信接口耦合。当图片处理装置为服务器时,该通信接口可以是收发器或输入/输出接口;当该图片处理装置为服务器中包含的芯片时,该通信接口可以是芯片的输入/输出接口。
在一种可能的设计中,该图片处理装置还可以包括通信接口,处理器与通信接口耦合。当图片处理装置为终端时,该通信接口可以是收发器或输入/输出接口;当该图片处理装置为终端中包含的芯片时,该通信接口可以是芯片的输入/输出接口。
在一种可能的设计中,收发器可以为收发电路,输入/输出接口可以是输入/输出电路。
第四方面,本申请实施例提供一种芯片***,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得该芯片***实现上述第一方面或第一方面的任一种可能的设计中的方法。
在一种可能的设计中,该芯片***还可以包括接口电路,该接口电路用于接收代码指令并传输至所述处理器。
在一种可能的设计中,该芯片***中的处理器可以为一个或多个,该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
在一种可能的设计中,该芯片***中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本申请并不限定。示例性的,存储器可以是非瞬时性处理器,例如只读存储器ROM,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
第五方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序或指令,当该计算机程序或指令被执行时,使得计算机执行上述第一方面或第一方面的任一种可能的设计中的方法。
第六方面,本申请实施例提供一种计算机程序产品,当计算机读取并执行所述计算机程序产品时,使得计算机执行上述第一方面或第一方面的任一种可能的设计中的方法。
具体实施方式
为了便于理解,示例的给出了部分与本申请实施例相关概念的说明以供参考,如下所示:
(1)锚点,可以指相对图片参考坐标系不变的一个坐标,可用于确定图片中一对像素点之间的相对位置。例如,图片经过变换操作后(如裁剪、拉伸、缩小或放大等),一对像素点相对于锚点的位置不变。
(2)图层的元素类型,可以包括背景元素和主体元素。其中,背景元素可以指多个图层中大部分或全部元素图像被其它图层中的元素图像遮挡(或覆盖)的图层,通常背景元素对应的图层一般位于多个图层的底部或接近最底部的位置(如从底部向上数的第二个图层)。主体元素可以指多个图层中大部分或全部元素图像未被其它图层中的元素图像遮挡(或覆盖)的图层,通常主体元素对应的图层一般位于多个图层的顶部或接近顶部的位置(如从顶部向下述的第二个图层)。
可选的,背景元素可以分为主背景元素和其它背景元素。主背景元素可以指覆盖整个原始图片,大面积纯色的图层,通常主背景元素可位于多个图层的底部,可以是原始图片的参考坐标系。其它背景元素可以指背景元素中除了主背景元素之外的背景元素,通常其它背景元素可以部分覆盖原始图片。
(3)最小外接水平矩形,可以为原始图片中包括所有主体元素的最小水平矩形。
(4)可裁剪区域,可以指原始图片中除了最小外接水平矩形之外的区域。由于可裁剪区域中不包括主体元素,所以即使将原始图片的可裁剪区域裁剪掉,也不会丢失图片内容。
(5)开屏图片,可以指APP启动后所显示的一张或多张图片。例如,用户对终端安装的APP进行启动操作,作为响应,终端先显示该APP的开屏图片,再显示该APP的用户界面。其中,在开屏图片为一张的情况下,终端可以直接显示该开屏图片;在开屏图片为多张的情况下,终端可以按照该多张开屏图片的播放顺序进行播放。
以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例涉及的至少一个,包括一个或者多个;其中,多个是指大于或者等于两个。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
本申请实施例涉及的应用程序(application,app),可以简称应用,为能够实现某项或多项特定功能的软件程序。通常,终端中可以安装多个应用,例如,即时通讯类应用、视频类应用、音频类应用、图像拍摄类应用等等。其中,即时通信类应用,例如可以包括短信应用、微信(WeChat)、WhatsApp Messenger、连我(Line)、照片分享(instagram)、Kakao Talk、钉钉等。图像拍摄类应用,例如可以包括相机应用(***相机或第三方相机应用)。视频类应用,例如可以包括Youtube、Twitter、抖音、爱奇艺、腾讯视频等等。音频类应用,例如可以包括酷狗音乐、虾米、QQ音乐等等。以下实施例中提到的应用,可以是终端出厂时已安装的应用,也可以是用户在使用终端的过程中从网络下载或其他终端获取的应用。
下面将结合本申请以下实施例中的附图,对本申请实施例中的技术方案进行详尽描述。
图1示出了本申请实施例提供的图片处理方法的一种示例性的场景示意图。如图1所示,该场景中可以包括服务器200,以及多个终端300(图中以两个手机为例)。服务器200与终端300之间建立连接后,服务器200可以为终端300提供网络服务。
作为一个示例,在终端300首次下载APP压缩文件时,终端300可以通过应用市场或浏览器等向服务器200发送获取APP压缩文件的请求消息。相应地,服务器200维护有大量的APP压缩文件,当服务器200接收到终端300获取APP压缩文件的请求消息后,服务器200可以根据终端300显示屏幕的尺寸对APP的原始开屏图片进行裁剪、拉伸、缩小或放大等处理,以使得处理后的开屏图片能够匹配终端300显示屏幕的尺寸。服务器200将APP压缩文件发送给终端300,APP压缩文件中包括处理后的开屏图片。终端300接收APP压缩文件,对其解压缩并安装。用户启动该APP后,终端300可以显示或播放处理后的开屏图片。
其中,APP的开屏图片的数量可以是一张或多张。例如,在开屏图片的数量为一张时,终端可以显示该APP的开屏图片。再例如,在开屏图片的数量为多张时,终端可以按照该APP的多张开屏图片的播放顺序进行播放。
作为另一个示例,在终端300首次下载APP压缩文件时,终端300可以通过应用市场或浏览器等向服务器200发送获取APP压缩文件的请求消息。相应地,服务器200维护有大量的APP压缩文件,当服务器200接收到终端300获取APP压缩文件的请求消息后,可以将APP压缩文件发送给终端300。终端300接收APP压缩文件,对其解压缩并安装。其中,终端300解压APP压缩文件可以得到该APP的原始开屏图片,进一步,终端300可以按照自身显示屏幕的尺寸对APP的原始开屏图片进行裁剪、拉伸、缩小或放大等处理,使得处理后的开屏图片能够匹配自身显示屏幕的尺寸。用户启动该APP之后,终端300可以显示或播放处理后的开屏图片。
可以理解的是,终端300可以将处理后的开屏图片存储在本地。也即是,终端300或服务器200仅在终端300首次下载安装APP的过程中,对该APP的原始开屏图片进行处理,以使得处理后的开屏图片与终端300显示屏幕的尺寸相匹配。当该APP安装完成之后,终端300可以直接显示该处理后的开屏图片,无需再对原始开屏图片进行处理。
需要说明的是,服务器200可以在接收到终端300获取APP压缩文件的请求消息之后向终端300发送APP压缩文件,也可以主动向终端300发送APP压缩文件,本申请实施例对比并不限定。例如,服务器200可以将更新的APP压缩文件推送给终端300,以使得终端300更新本地的APP版本。
需要说明的是,本申请实施例提供的图片处理方法可以用于对APP的开屏图片的处理,也可以用于对屏保图片的处理,还可以用于对APP中广告图片的处理等,本申请实施例对待处理图片的类型并不限定。为了便于描述,在下文中将以对APP的开屏图片的处理为例介绍本申请实施例。
例如,服务器200中维护着大量屏保图片。服务器200可以向终端300推送屏保图片,或者在终端300请求服务器发送屏保图片后,服务器200可以向终端300发送屏保图片。在服务器200向终端300发送屏保图片之前,服务器200可以按照终端300显示屏幕的尺寸对原始屏保图片进行裁剪、拉伸、缩小或放大等处理,以使得处理后的屏保图片能够匹配终端300显示屏幕的尺寸。之后,服务器200可以将处理后的屏保图片发送给终端300。终端300接收处理后的屏保图片,并显示或播放处理后的屏保图片。
再例如,服务器200中维护着大量屏保图片。服务器200可以向终端300推送屏保图片,或者在终端300请求服务器发送屏保图片后,服务器200可以向终端300发送屏保图片。终端300接收来自服务器200的原始屏保图片,可以按照自身显示屏幕的尺寸对原始屏保图片进行裁剪、拉伸、缩小或放大等处理,以使得处理后的屏保图片能够匹配自身显示屏幕的尺寸。之后,终端300可以显示或播放处理后的屏保图片。
在另一种示例性的场景中,本申请实施例提供的图片处理方法可以应用在服务器200本地的图片处理场景中或终端300本地的图片处理场景中。例如,服务器200(或终端300)在显示本地存储的图片时,可以按照本申请实施例提供的图片处理方法,对本地存储的图片进行裁剪、拉伸、缩小或放大等处理,以使得处理后的图片能够匹配自身显示屏幕的尺寸。再例如,用户可以输入图片(如从本地存储的图片中选择一张图片)和目标尺寸,服务器200(或终端300)可以按照目标尺寸对图片进行裁剪、拉伸、缩小或放大等处理,以使得处理后的图片能够达到目标尺寸。其中,本地存储的图片可以为本地媒体中心、图库或缓存中心等位置中的图片。
其中,服务器200和终端300之间可以通过通信网络互联,该通信网络可以是局域网,也可以是通过中继(relay)设备转接的广域网。当该通信网络为局域网时,示例性的,该通信网络可以是wifi热点网络、wifi P2P网络、蓝牙网络、zigbee网络或近场通信(nearfield communication,NFC)网络等近距离通信网络。当该通信网络为广域网时,示例性的,该通信网络可以是第三代移动通信技术(the 3rd-generation wireless telephonetechnology,3G)网络、***移动通信技术(the 4th generation mobile communicationtechnology,4G)网络、第五代移动通信技术(the 5th-generation mobile communicationtechnology,5G)网络、未来演进的公共陆地移动网络(public land mobile network,PLMN)或因特网等。在图1所示的场景中,不同电子设备之间可以通过通信网络交互数据,例如,终端300向服务器200发送获取APP压缩文件的请求消息,服务器200将APP压缩文件发送给终端300等。
下面分别针对服务器200以及终端300进行示例性说明:
一、服务器200:
具体的,一种场景下,如果服务器200可以按照终端300显示屏幕的尺寸对原始开屏图片进行处理,以使得处理后的开屏图片能够匹配终端300显示屏幕的尺寸,则服务器200可以为存储有图片处理相关的应用程序代码的单服务器、服务器群集或云服务器等。其中,图2示出的是与本申请各实施例相关的服务器200的部分结构的框图。
如图2所示,该服务器200可以包括:处理器201、存储器202以及收发器203。其中一个或多个计算机程序被存储在上述存储器202中并被配置为被该一个或多个处理器201执行。
处理器201,可以是中央处理单元(central processing unit,CPU),或者为数字处理单元等。处理器201可以是服务器200的控制中心,利用各种接口和线路连接整个服务器200的各个部分,通过运行或执行存储在存储器202内的计算机程序,以及调用存储在存储器202内的与图片处理相关的计算机程序,执行与图片处理相关的各种功能,例如,对图片进行渲染、剪裁、拉伸、压缩等处理。
收发器203,可以用于接收终端300发送获取APP压缩文件的请求消息,以及将处理器201处理后的开屏图片发送给终端300等。
示例性的,该服务器200还可以包括数据库204。该数据库204,可以用于存储大量的APP压缩文件,各APP对应的原始开屏图片,或处理后的开屏图片等。
本申请实施例中不限定上述处理器201以及存储器202、处理器201以及数据库204等之间的具体连接介质。本申请实施例在图2中以处理器210、存储器202、收发器203以及数据库204之间通过总线205连接,总线在图2中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引此以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器202可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器202也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器202是能够用于携带或存储具有指令或数据结构形式的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器202可以是上述存储器的组合。
二、终端300:
终端300可以是还包含其他功能诸如个人数字助理和/或音乐播放器功能的便携式电子设备,诸如手机、平板电脑、具备无线通讯功能的可穿戴设备(如智能手表)等。便携式电子设备的示例性实施例包括但不限于搭载iOS、android、microsoft或者其他操作***的便携式电子设备。上述便携式电子设备也可以是其他便携式电子设备,诸如具有触敏表面(例如触控面板)的膝上型计算机(laptop)等。下面以终端300为手机为例进行说明,图3示出的是与本申请各实施例相关的终端300的部分结构的框图。
如图3所示,终端300可以为手机,该手机可以包括处理器1110,外部存储器接口1120,内部存储器1121,USB接口1130,充电管理模块1140,电源管理模块1141,电池1142,天线1,天线2,移动通信模块1150,无线通信模块1160,音频模块1170,扬声器1170A,受话器1170B,麦克风1170C,耳机接口1170D,传感器模块1180,按键1190,马达1191,指示器1192,摄像头1193,显示屏1194,以及SIM卡接口1195等。
可以理解的是,本发明实施例示意的结构并不构成对终端300的具体限定。在本申请另一些实施例中,终端300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器1110可以包括一个或多个处理单元,例如:处理器1110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(Neural-network Processing Unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是终端300的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器1110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器1110中的存储器为高速缓冲存储器。该存储器可以保存处理器1110刚用过或循环使用的指令或数据。如果处理器1110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器1110的等待时间,因而提高了***的效率。
在一些实施例中,处理器1110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
终端300的无线通信功能可以通过天线1,天线2,移动通信模块1150,无线通信模块1160,调制解调处理器以及基带处理器等实现。例如,终端300可以通过天线1,天线2,移动通信模块1150,无线通信模块1160,调制解调处理器以及基带处理器等向服务器200发送获取APP压缩文件的请求消息,以及接收来自服务器200的APP压缩文件等。
天线1和天线2用于发射和接收电磁波信号。终端300中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将蜂窝网天线复用为无线局域网分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块1150可以提供应用在终端300上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块1150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块1150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块1150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块1150的至少部分功能模块可以被设置于处理器1110中。在一些实施例中,移动通信模块1150的至少部分功能模块可以与处理器1110的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器1170A,受话器1170B等)输出声音信号,或通过显示屏1194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器1110,与移动通信模块1150或其他功能模块设置在同一个器件中。
无线通信模块1160可以提供应用在终端300上的包括无线局域网(wirelesslocal area networks,WLAN),蓝牙(bluetooth,BT),全球导航卫星***(globalnavigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块1160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块1160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器1110。无线通信模块1160还可以从处理器1110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,终端300的天线1和移动通信模块1150耦合,天线2和无线通信模块1160耦合,使得终端300可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯***(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位***(global positioning system,GPS),全球导航卫星***(globalnavigation satellite system,GLONASS),北斗卫星导航***(beidou navigationsatellite system,BDS),准天顶卫星***(quasi-zenith satellite system,QZSS)和/或星基增强***(satellite based augmentation systems,SBAS)。
终端300通过GPU,显示屏1194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏1194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器1110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。本申请实施例中,终端300通过GPU,显示屏1194,以及应用处理器等实现对开屏图片的显示或播放。
显示屏1194用于显示图片,视频等。显示屏1194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,终端300可以包括1个或N个显示屏,N为大于1的正整数。在本申请实施例中,显示屏1194可用于显示或播放处理后的开屏图片。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当终端300在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现终端300的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口1120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端300的存储能力。外部存储卡通过外部存储器接口1120与处理器1110通信,实现数据存储功能。例如将图片,视频等文件保存在外部存储卡中。
内部存储器1121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器1110通过运行存储在内部存储器1121的指令,从而执行终端300的各种功能应用以及数据处理。存储器1121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如视频播放功能,图片显示功能等)等。存储数据区可存储终端300使用过程中所创建的数据(比如音频数据,电话本等)等。此外,存储器1121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
本申请实施例以分层架构的Android***为例,示例性说明终端300的软件结构。
图4是本发明实施例的终端300的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android***分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和***库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图4所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图4所示,应用程序框架层可以包括窗口管理器,内容提供器,视图***,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图***包括可视控件,例如显示文字的控件,显示图片的控件等。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓***的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
***库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子***进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
目前,为了提高设计开屏图片的效率,一种方式为服务器可以按照终端显示屏幕的尺寸对原始开屏图片进行裁剪,裁剪后的开屏图片的宽高比与终端显示屏幕的宽高比相同。进一步,服务器可以对裁剪后的开屏图片进行等比例缩小或放大处理,处理后的开屏图片能够与终端显示屏幕的尺寸相匹配。但是,当原始开屏图片的可裁剪区域不足时,直接裁剪的方式会裁剪过度,导致裁剪后的开屏图片的内容不完整,出现失真的问题。
例如,原始开屏图片的宽高比为7:3,终端显示屏幕的宽高比为5:3,原始开屏图片的可裁剪区域占原始开屏图片的宽度值的8%,而需要裁剪的宽度值应该为原始开屏图片的宽度值的28.6%,显然原始开屏图片的可裁剪区域不足。在此情况下,服务器根据终端显示屏幕的宽高比对原始开屏图片进行直接裁剪,会裁剪掉原始开屏图片的宽度值的28.6%,裁剪后的开屏图片的宽高比与终端显示屏幕的宽高比相同,但是由于实际裁剪区域大于可裁剪区域,也即是实际裁剪时会裁剪掉主体元素的部分内容,导致裁剪过度,使得裁剪后的开屏图片的内容不完整,出现失真的问题,如图5所示。
另一种方式为服务器可以对原始开屏图片进行主体元素识别,根据识别到的主体元素对原始开屏图片进行裁剪,裁剪后的开屏图片中包括识别到的主体元素。进一步,服务器可以根据终端显示屏幕的尺寸对裁剪后的开屏图片进行拉伸或收缩处理,处理后的开屏图片能够与终端显示屏幕的尺寸相匹配。但是,在主体元素不单一的情况下,服务器在对整个原始开屏图片进行主体元素识别时,可能仅识别到开屏图片中的部分主体元素。那么服务器根据识别到的主体元素对原始开屏图片进行裁剪,会导致裁剪后的开屏图片中仅包括识别到的部分主体元素,使得裁剪后的开屏图片的内容不完整。并且,服务器对裁剪后的图片进行拉伸或收缩处理时,会导致处理后的开屏图片中的主题元素变形严重,出现失真的问题。
例如,原始开屏图片中包括主体元素1和主体元素2,其中,主体元素1中包括人物和文字,主体元素2中包括商品和文字。服务器对原始开屏图片进行主体元素识别,识别到主体元素1,未识别到主体元素2。一方面,服务器根据主体元素1对原始开屏图片进行裁剪,裁剪后的开屏图片中包括主体元素1,但不包括主体元素2,使得裁剪后的开屏图片的内容不完整,出现失真的问题;另一方面,为了使开屏图片能够铺满终端的显示屏幕,服务器对裁剪后的开屏图片进行拉伸处理,导致开屏图片找中的人物和文字变形严重,也会出现失真的问题,如图6所示。
鉴于此,本申请实施例提供一种图片处理方法,该方法可以对图片进行处理,处理后的图片可以与目标尺寸相匹配,且处理后的图片中保留完整的图片信息,无失真。
需要说明的是,本申请实施例提供的图片处理方法的执行主体可以是服务器,也可以是终端,本申请实施例对此并不限定。为了便于理解,下文中以服务器为执行主体为例对本申请实施例提供的图片处理方法进行介绍。
图7示出了本申请实施例提供的一种图片处理方法的流程示意图。该方法可以适用于图1所示的应用场景中,例如本申请实施例中的服务器可以为图1所示的服务器200。可以理解的是,本申请实施例中,由服务器执行的步骤也可以具体由服务器的一个模块或部件执行,如可以由该服务器中的芯片或芯片***执行。如图7所示,该方法的流程可以如下所示。
S701:服务器获取第一图片。
示例性的,第一图片中可以包括两个或两个以上的图层。例如,第一图片的格式可以为PSD格式或PDD格式等。第一图片的数量可以为一张或多张,例如当第一图片的数量为多张时,可以按照该多张第一图片的顺序进行播放。
示例性的,第一图片的尺寸与目标尺寸不匹配。其中,目标尺寸中可以包括目标宽度值和目标高度值。其中,第一图片的尺寸与目标尺寸不匹配可以指第一图片的宽度值小于或大于目标宽度值,和/或,第一图片的高度值小于或大于目标高度值。
作为一个示例,目标尺寸可以为终端显示屏幕的尺寸。例如,在S801之前,服务器可以接收来自终端获取第一APP压缩文件的请求消息,该请求消息中可以包括第一APP的标识。服务器可以根据第一APP的标识从本地维护的多个APP压缩文件中确定第一APP压缩文件,该第一APP压缩文件中包括第一图片,如第一图片可以为第一APP的原始开屏图片或第一APP内的原始广告图片等。由于第一图片与终端显示屏幕的尺寸不匹配,如第一图片不能铺满终端的整个显示屏幕,或终端的显示屏幕不能完整显示第一图片等,因此,服务器在确定第一APP压缩文件后,可以获取第一APP压缩文件中的第一图片,如通过对第一APP压缩文件进行解压缩可以得到第一图片,并采用本申请实施例提供的图片处理方法对第一图片进行处理,以使得处理后的第一图片能够与终端显示屏幕的尺寸相匹配。其中,处理后的第一图片与终端显示屏幕的尺寸相匹配可以指,处理后的第一图片的宽度值等于终端显示屏幕的宽度值,且处理后的第一图片的高度值等于终端显示屏幕的高度值。
作为另一个示例,目标尺寸可以为用户输入的尺寸。例如,用户可以向服务器输入第一图片,或者从服务器本地的多张图片中选择第一图片,并输入目标尺寸。作为响应,服务器得到第一图片和目标尺寸后可以采用本申请实施例提供的图片处理方法对第一图片进行处理,以使得处理后的第一图片与目标尺寸相匹配。其中,处理后的第一图片与目标尺寸相匹配可以指,处理后的第一图片的宽度值等于目标宽度值,且处理后的第一图片的高度值等于目标高度值。
S702:服务器确定第一图片中每个图层的元素类型。
示例性的,服务器可以按照元素类型将第一图片中的至少两个图层分为第一图层和第二图层,其中,第一图层为该至少两个图层中元素类型为背景元素的一个或多个图层,第二图层为该至少两个图层中元素类型为主体元素的一个或多个图层。
示例性的,服务器可以对第一图片进行解析得到至少两个图层,通过识别该至少两个图层的内容确定每个图层的元素类型。例如,服务器可以通过RGB分量分布统计算法、拉普拉斯(laplacian)算法、或主体显著性识别等算法确定第一图片中各个图层的元素类型。例如,服务器可以对第一图片进行解析得到五个图层,分别记为图层1、图层2、图层3、图层4以及图层5。进一步,服务器可以通过主体显著性识别算法对该五个图层中每个图层的内容进行识别,确定每个图层的元素类型,并将该五个图层分为第一图层和第二图层。如图8所示,图层1为纯色的图片,且图层1的大部分元素图像被其它图层(如图层2、图层3、图层4、图层5)遮挡,所以图层1的元素类型可以为背景元素中的主背景元素,记为背景元素1;图层2不是纯色的图片,但图层2的部分元素图像被其它图层(如图层5)部分遮盖,所以图层2的元素类型可以为背景元素中的其它背景元素,记为背景元素2;图层3、图层4以及图层5中的元素图像皆未被其它图层的元素图像遮挡或覆盖,所以图层3、图层4以及图层5皆为主体元素,分别记为主体元素1、主体元素2以及主体元素3;其中,第一图层包括图层1和图层2,第二图层包括图层3,图层4和图层5。
S803:服务器确定第一裁剪区域。
示例性的,第一裁剪区域可以为使得裁剪后的第一图片的宽高比与目标尺寸的宽高比相同所需要裁剪的最小区域。也即是,服务器裁剪掉第一图片的第一裁剪区域,得到裁剪后的第一图片,该裁剪后的第一图片的宽高比与目标尺寸的宽高比相同。
示例性,第一裁剪区域可以是一个区域,也可以是多个区域。例如,第一裁剪区域可以是在宽度方向上需要裁剪掉的最小宽度值,以使得裁剪后的第一图片的宽高比与终端显示屏幕的宽高比相同。或者,第一裁剪区域可以是高度方向上需要裁剪掉的最小高度值,以使得裁剪后的第一图片的宽高比与终端显示屏幕的宽高比相同。
示例性的,服务器可以根据第一图片的尺寸和目标尺寸确定第一图片的第一裁剪区域。具体的,服务器可以根据第一图片的宽高比和目标尺寸的宽高比,确定第一图片的第一裁剪区域的宽度值和/或高度值。例如,服务器可以根据如下公式(1)确定第一图片的第一裁剪区域的宽度值和/或高度值。
其中,max(·)可以用于表示最大值运算。Δw可以表示第一裁剪区域的宽度值,Δh可以表示第一裁剪区域的高度值。ws可以表示第一图片的宽度值,hs可以表示第一图片的高度值。wt可以表示目标宽度值,ht可以表示目标高度值。
例如,服务器可以对第一图片的宽度进行裁剪,在高度上无需裁剪,裁剪后的第一图片的宽高比与目标尺寸的宽高比相同。假设第一图片的宽高比为ws/hs,目标尺寸的宽高比为wt/ht,则第一图片中需要裁剪的比例为(wt/ht-ws/hs),转换为绝对裁剪尺寸可以为hs*(wt/ht-ws/hs),即第一裁剪区域的宽度值。再例如,服务器可以对第一图片的高度进行裁剪,在宽度上无需裁剪,裁剪后的第一图片的高宽比与目标尺寸的高宽比相同。假设第一图片的高宽比为hs/ws,目标尺寸的高宽比为ht/wt,则第一图片中需要裁剪的比例为(ht/wt-hs/ws),转换为绝对裁剪尺寸可以为ws*(ht/wt-hs/ws),即第一裁剪区域的高度值。
举例而言,第一图片的宽度值为450毫米(mm),第一图片的高度值为360mm。目标宽度值为400mm,目标高度值为300mm。服务器可以根据公式(1)可以确定第一裁剪区域的宽度值为Δw=max(30,0),第一裁剪区域的高度值Δh=max(-22.5,0),即第一裁剪区域的宽度值为30mm,高度值为360mm,意味着,服务器需要在宽度方向上对第一图片进行裁剪,需要裁剪掉的宽度值为30mm,在高度方向上无需裁剪,从而可以保证裁剪后的第一图片的宽高比与目标尺寸的宽高比相同,如图9所示。可以理解的是,服务器可以在第一图片的一侧进行裁剪,裁剪掉30mm的宽度值,如图9所示,也可以在第一图片的两则进行裁剪,一共裁剪掉30mm的宽度值,如图10所示。
S704:服务器确定第一裁剪区域是否位于第一图片的可裁剪区域内。如果服务器确定第一裁剪区域位于第一图片的可裁剪区域内,则服务器执行S705所示的内容;如果服务器确定第一裁剪区域没有位于第一图片的可裁剪区域内,则服务器执行S706所示的内容。
示例性的,第一裁剪区域位于第一图片的可裁剪区域内可以指,在宽度方向上裁剪时,第一裁剪区域的宽度值小于或等于第一图片的可裁剪区域的宽度值,或者,在高度方向上裁剪时,第一裁剪区域的高度值小于或等于第一图片的可裁剪区域的高度值。例如,第一裁剪区域的高度值小于或等于可裁剪区域的高度值,则服务器可以执行步骤S705所示的内容;反之,则服务器可以执行步骤S706所示的内容。再例如,第一裁剪区域的宽度值小于或等于可裁剪区域的宽度值,则服务器可以执行步骤S705所示的内容;反之,则服务器可以执行步骤S706所示的内容。
其中,可裁剪区域可以指,第一图片中除了最小外接水平矩形之外的区域。其中,最小外接水平矩形中包括第一图片的所有主体元素。例如,服务器可以遍历第一图片中所有主体元素的像素点的坐标,像素点的坐标可以记为(x,y),则第一图片中所有主体元素的像素点的横坐标可构成集合X,第一图片中所有主体元素的像素点的纵坐标可以构成集合Y。由于第一图片的最小外接水平矩形中包括第一图片中所有主体元素,因此,第一图片的最小外接水平矩形的四个顶点的坐标可以分别为{min(X),min(Y)}、{min(X),max(Y)}、{max(X),min(Y)}以及{max(X),max(Y)},如图11A所示。由于可裁剪区域中不包括第一图片的主体元素,所以即使将可裁剪区域裁剪掉也不会导致图片信息的丢失,意味着,服务器在可裁剪区域进行裁剪时,可以保证裁剪后的图片的内容的完整性。
示例性的,服务器可以根据第一图片和第一图片的最小外接水平矩形确定第一图片的可裁剪区域。例如,服务器可以根据第一图片的宽度值以及第一图片的最小外接水平矩形的宽度值确定可裁剪区域的宽度值,和/或,服务器可以根据第一图片的高度值以及第一图片的最小外接水平矩形的高度值确定可裁剪区域的高度值。以图11A为例,第一图片的四个顶点的坐标可以分别为{0,y1},{0,min(Y)},{max(X),min(Y)}以及{max(X),y1}。第一图片的最小外接水平矩形的四个顶点的坐标可以分别为{min(X),min(Y)}、{min(X),max(Y)}、{max(X),min(Y)}以及{max(X),max(Y)}。进一步,服务器根据第一图片的宽度值和第一图片的最小外接水平矩形的宽度值,确定可裁剪区域的宽度值为{max(X)-min(X)};服务器根据第一图片的高度值和第一图片的最小外接水平矩形的高度值,可以确定可裁剪区域的高度值为{y1-max(Y)},如图11B所示。
在另一种可能的实施方式中,步骤S804中,服务器可以确定第一裁剪区域是否满足预设条件。如果服务器确定第一裁剪区域满足预设条件,则服务器可以执行S705所示的内容。如果服务器确定第一裁剪区域不满足预设条件,则服务器可以执行S706所示内容。例如,预设条件可以为第一裁剪区域大于或等于第一图片的百分之十,且小于或等于第一图片的百分之二十。其中,预设条件可以为预先配置的。
例如,服务器在宽度方向上对第一图片进行裁剪,当第一裁剪区域的宽度值大于或等于第一图片的宽度值的10%、且小于或等于第一图片的宽度值的20%时,服务器可以确定第一裁剪区域满足预设条件,并执行步骤S705所示的内容;反之,服务器可以确定第一裁剪区域不满足预设条件,则执行步骤S706所示的内容。以图10为例,服务器在宽度上对第一图片进行裁剪,根据步骤S703,第一裁剪区域的宽度值为30mm,占第一图片的宽度值的6.7%,显然不在10%至20%的范围里,因此,图10中的第一裁剪区域不满足预设条件。
S705:服务器根据第一裁剪区域对第一图片进行裁剪,得到第二图片。
示例性的,在第一裁剪区域位于第一图片的可裁剪区域内时,服务器可以直接裁剪掉第一裁剪区域,裁剪后的第一图片的宽高比与目标尺寸的宽高比相同。进一步,如果裁剪后的第一图片的尺寸与目标尺寸相匹配,则裁剪后的第一图片即为第二图片。如果裁剪后的第一图片的尺寸与目标尺寸不匹配,则服务器可以根据目标尺寸对裁剪后的第一图片进行等比例的缩小或放大处理,得到第二图片。其中,第二图片的尺寸与目标尺寸相匹配,也即是第二图片的长度值等于目标尺寸的长度值,第二图片的宽度值等于目标尺寸的宽度值。由于第一裁剪区域位于第一图片的可裁剪区域内,因此第一裁剪区域内不包括主体元素,也即是第二图片中包括完整的图像信息。
S706:服务器为第一图片中任意两个图层配置锚点,得到锚点集合。
示例性的,服务器可以为第一图片中的任意两个图层配置锚点,得到锚点集合,该锚点可用于确定两个图层之间的相对位置。例如,服务器可以根据第三图层与第四图层之间的距离为第三图层和第四图层配置锚点,如服务器可以根据第三图层与第四图层之间的赫斯多夫距离为该第三图层和第四图层配置锚点,其中,第三图层与第四图层为第一图片中的任意两个图层。由于锚点是相对于图片参考坐标系中不变的一个坐标,当服务器为第一图片中的任意两个图层配置锚点后,第一图片经过拉伸、压缩、缩小或放大等处理后,该第三图层和第四图层相较于锚点的位置不变。从视觉感官上来讲,第一图片变换前后,第三图层和第四图层之间的相对位置没有发生变化,从而可以避免第一图片变换后所导致的失真的问题。
下面以第三图层为图层A,第四图层为图层B为例来描述步骤S706的具体实施过程。其中,图层A和图层B可以为第一图片中的任意两个图层。例如,图层A为图8中的图层1、图层B为图8中的图层2,或者图层A为图8中的图层2、图层B为图8中的图层3,或者图层A为图8中的图层2、图层B为图8中的图层4等。
图12示出了本申请实施例提供的服务器为图层A和图层B配置锚点的流程示意图。其中,图层A的像素点可记为像素点a,图层A的像素点集合可记为集合A,图层B的像素点可记为像素点b,图层B的像素点集合可记为集合B。如图12所示,该流程可以包括:
步骤S1201:服务器可以遍历集合A和集合B,确定图层A与图层B之间的赫斯多夫距离。
示例性的,服务器可以根据公式(2)确定图层A与图层B之间的赫斯多夫距离。公式(2)可以如下所示:
dH(A,B)=max{supa∈Ainfdb∈B(a,b),supb∈Binfda∈A(a,b)} (公式2)
其中,dH(A,B)表示图层A与图层B之间的赫斯多夫距离,sup(·)表示上确界运算,inf(·)表示下确界运算。
步骤S1202:服务器确定图层A与图层B之间的赫斯多夫距离是否满足第一预设条件。
其中,第一预设条件为大于0且小于第一阈值。
示例性的,如果图层A与图层B之间的赫斯多夫距离不满足第一预设条件、且大于或等于第一阈值,则服务器可以执行步骤S1203所述的内容。如果图层A与图层B之间的赫斯多夫满足第一预设条件,则服务器可以执行步骤S1204所示的内容。如果图层A与图层B之间的赫斯多夫距离不满足第一预设条件、且等于0,则服务器可以执行步骤S1205所示的内容。其中,第一阈值可以是预先设置的,第一阈值可以为很小的正数。
步骤S1203:服务器确定图层A的中心点和图层B的中心点为图层A和图层B之间的锚点。
示例性的,图层A与图层B之间的赫斯多夫距离大于或等于第一阈值,意味着,图层A与图层B在位置关系上为不相交,且图层A与图层B之间的赫斯多夫距离大于或等于第一阈值,在此情况下,服务器可以将图层A的中心点和图层B的中心点配置为图层A和图层B之间的锚点。
以图8为例,主体元素3(即图层5)与主体元素1(即图层3)在位置关系上不相交,且两者的赫斯多夫距离大于或等于第一阈值,服务器可以将主体元素3的中心点和主体元素1的中心点配置为主体元素3和主体元素1之间的锚点,如主体元素3的中心点为锚点1,主体元素1的中心点为锚点2。类似的,主体元素3与主体元素2(即图层4)在位置关系上也不相交,存在一定的距离,服务器可以将主体元素3的中心点和主体元素2的中心点配置为主体元素3和主体元素2之间的锚点,如主体元素2的中心点为锚点3,如图13所示。
步骤S1204:服务器根据第一像素对,为图层A和图层B配置锚点。
其中,该第一像素对为集合A和集合B中满足第一预设条件的一对或多对像素点。
示例性的,图层A与图层B之间的赫斯多夫距离大于0且小于第一阈值,第一阈值可以为很小的正数,意味着图层A与图层B趋近接触但没有接触,在此情况下,服务器可以根据集合A和集合B中满足赫斯多夫距离大于0且小于第一阈值的一对或多对像素点为图层A和图层B配置锚点。
例如,一对或多对像素点中的每对像素点可以包括一个像素点a和一个像素点b。例如,服务器可以根据公式(3)确定满足赫斯多夫距离小于第一阈值且大于0的一对或多对像素点。
0<argmaxa,b{dH(A,B)}<ε (公式3)
其中,ε可以表示第一阈值,argmax(·)可用于确定满足赫斯多夫距离小于第一阈值且大于0的一对或多对像素点。
下面介绍三种锚点配置方式。
方式1,在第一像素对为一对像素点的情况下,服务器可以将确定该一对像素点的中心点为图层A和图层B之间的锚点。例如,像素点a的坐标为(x1,y1),像素点b的坐标为(x2,y2),则图层A与图层B之间的锚点的坐标可以为((x1+x2)/2,(y1+y2)/2)。
方式2,在第一像素对为多对像素点,且该多对像素点对应的赫斯多夫距离不同的情况下,服务器可以确定该多对像素点中赫斯多夫距离最小所对应的一对像素点的中心点、为图层A和图层B之间的锚点。
方式3,在第一像素对为多对像素点,且该多对像素点对应的赫斯多夫距离相同的情况下,服务器可以确定该多对像素点的中心点为图层A和图层B的锚点。例如,服务器可以先分别求取每对像素点的中心点,得到多个中心点,再对该多个中心点进行平均运算,得到图层A与图层B的锚点的坐标。再例如,服务器可以直接对该多对像素点的坐标进行平均运算,得到图层A与图层B的锚点的坐标。
以图8为例,图层2(即背景元素2)与图层3(即主体元素1)之间的赫斯多夫距离大于0、且小于第一阈值,则服务器可以根据图层2与图层3中满足赫斯多夫距离大于0且小于第一阈值的一对或多对像素点、为图层2和图层3配置锚点。例如,图层2与图层3中存在一对像素点对应的赫斯多夫距离大于0且小于第一阈值,服务器可以将该对像素点的中心点配置为图层2与图层3之间的锚点,记为锚点4。类似的,图层2与图层4(即主体元素2)之间的赫斯多夫距离大于0、且小于第一阈值,则服务器可以根据图层2与图层4中满足赫斯多夫距离大于0且小于第一阈值的一对或多对像素点、为图层2和图层4配置锚点图层2与图层4之间可配置锚点。例如,图层2与图层4中存在多对像素点对应的赫斯多夫距离大于0且小于第一阈值,服务器可以将该多对像素点中赫斯多夫距离最小所对应的一对像素点的中心点配置为图层2与图层4之间的锚点,记为锚点5,如图14所示。
S1205:在图层A与图层B相接触的情况下,服务器确定图层A与图层B的接触点为图层A与图层B之间的锚点;在图层A与图层B相交的情况下,服务器确定图层A与图层B的相交区域中的中心点为图层A与图层B之间的锚点;在图层A包含图层B的情况下,服务器确定图层A的中心点为图层A与图层B之间的锚点。
示例性的,图层A与图层B之间的赫斯多夫距离为0,意味着,图层A与图层B之间的位置关系可以是接触关系,或者是相交的关系,或者是包含关系。例如,服务器可以根据集合A和集合B确定图层A与图层B之间的位置关系。
例如,在集合A中部分边缘线对应的像素点的坐标与集合B中部分边缘线对应的像素点的坐标相等的情况下,服务器可以确定图层A与图层B为接触关系。进一步,服务器可以将图层A与图层B之间的接触点配置为图层A与图层B之间的锚点,如图15A所示。
例如,在集合A中部分第一像素点的坐标与集合B中部分第二像素点的坐标相等的情况下,服务器可以确定图层A与图层B为相交的关系。进一步,服务器可以将图层A与图层B的相交区域中的中心点配置为图层A与图层B之间的锚点,如图15B所示。其中,第一像素点可以为集合A中除了边缘线对应的像素点之外的像素点,第二像素点可以为集合B中除了边缘线对应的像素点之外的像素点。
再例如,在集合B为集合A的子集的情况下,服务器可以确定图层A与图层B之间的位置关系为包含关系,即图层A包含图层B。进一步,服务器可以将图层A的中心点配置为图层A与图层B之间的锚点,如图15C所示。
以图8为例,图层1包含图层2、图层3、图层4、图层5,服务器可以将图层1的中心点配置为图层1与图层2之间的锚点、图层1与图层3之间的锚点、图层1与图层4之间的锚点、以及图层1与图层5之间的锚点,记为锚点6。类似的,图层2包含图层5,服务器可以将图层2的中心点配置为图层2与图层5之间的锚点,记为锚点7。图层3与图层4之间的位置关系为接触关系,服务器可以将图层3与图层4的接触点配置为图层3与图层4之间的锚点,记为锚点8,如图16所示。
至此,服务器完成对图层A与图层B之间的锚点的配置。服务器可以按照图12所示的内容为第一图层中的任意两个图层配置锚点,得到锚点集合。例如,该锚点集合可以为{锚点1,锚点2,锚点3,锚点4,锚点5,锚点6,锚点7,锚点8},如图13、图14以及图16所示。
S707:服务器根据目标尺寸确定背景元素的伸缩向量。
示例性的,服务器可以根据第一图片的尺寸、目标尺寸以及每个背景元素的高度值,确定每个背景元素在宽度方向上的伸缩向量。或者,服务器可以根据第一图片的尺寸、目标尺寸以及每个背景元素的宽度值,确定每个背景元素在高度方向上的伸缩向量。
示例性的,服务器可以根据如下的公式(4)确定每个背景元素的伸缩向量。
其中,Δwi可以表示背景元素i可以拉伸或收缩的宽度值,Δhi可以表示背景元素i可以拉伸或收缩的高度值。ws可以表示第一图片的宽度值,hs可以表示第一图片的高度值。wis可以表示背景元素i的宽度值,his可以表示背景元素i的高度值。wt可以表示目标宽度值,ht可以标识目标高度值。
S708:服务器根据伸缩向量拉伸或压缩第一图片中的第一图层。
以图8为例,第一图层包括背景元素2和背景元素1。第一图片的宽度值为1600mm,第一图片的高度值为960mm。目标宽度值为1280mm,目标高度值为720mm。
对于背景元素2,背景元素2的宽度值为827mm,背景元素2的高度值为960mm。服务器根据上述公式(4)确定背景元素2需要拉伸或收缩的宽度值Δwi=max(106.7,0),背景元素2需要拉伸或收缩的宽度值Δhi=max(-31,0)。也即是,服务器可以以锚点4或锚点5为起点,在宽度方向上将背景元素2拉伸106.7mm,在高度方向上保持不变,如图17所示。拉伸后的第一图片的宽高比与目标尺寸的宽高比相同。
对于背景元素1,服务器可以根据公式(4)确定背景元素1在宽度方向上拉伸的宽度值,或者在高度方向上拉伸的高度值,然后对背景元素1进行拉伸。或者,由于背景元素1纯色的主背景元素,其拉伸或收缩对图像信息不影响,也不会出现失真的问题,因此,服务器也可以直接对背景元素1进行拉伸或收缩操作,拉伸或收缩操作后的背景元素1的尺寸与目标尺寸相匹配,从而可以节省计算成本。
S709:服务器根据锚点集合组合第二图层和拉伸或压缩后的第一图层,得到重组的第一图片。
示例性的,服务器可以根据锚点集合确定第一图片中任意两个图层之间的相对位置,并根据该任意两个图层之间的相对位置重组第二图层和拉伸或压缩后的第一图层,得到重组后的第一图片。
以图8为例,服务器可以根据锚点6(如图16所示)确定拉伸后的背景元素1与拉伸后的背景元素2之间的相对位置、拉伸后的背景元素1与主体元素1之间的相对位置、拉伸后的背景元素1与主体元素2之间的相对位置、以及拉伸后的背景元素1与主体元素3之间的相对位置。服务器可以根据锚点4(如图14所示)确定拉伸后的背景元素2和主体元素1的相对位置,根据锚点5(如图14所示)确定拉伸后的背景元素2和主体元素2的相对位置,以及根据锚点7(如图16所示)确定拉伸后的背景元素2和主体元素3之间的相对位置。服务器可以根据锚点8(如图16所示)确定主体元素1和主体元素2之间的相对位置,以及根据锚点1和锚点2(如图13所示)确定主体元素1和主体元素3之间的相对位置。服务器可以根据锚点1和锚点3(如图13所示)确定主体元素2和主体元素3之间的相对位置。之后,服务器可以根据任意两个图层之间的相对位置进行重组,得到重组的第一图片。其中,重组的第一图片的宽高比与目标尺寸的宽高比相同。
S710:服务器对重组的第一图片进行等比例缩小或放大,得到第二图片。
示例性的,服务器可以根据第一图片的尺寸和目标尺寸对重组的第一图片进行等比例缩小或放大,得到第二图片。其中,第二图片的尺寸与目标尺寸相匹配,即第二图片的宽度值等于目标宽度值,第二图片的高度值等于目标高度值。例如,第二图片在终端显示时,该第二图片的尺寸与终端显示屏幕的尺寸匹配。可选的,如果图层的覆盖范围超过目标尺寸,则服务器可以按照目标尺寸对该图层进行裁剪。
例如,如果服务器在宽度方向上对背景元素进行了拉伸,则服务器可以根据第一图片的高度值、在高度方向上对背景元素可以拉伸的高度值以及目标高度值,确定缩放比例。例如,服务器可以如下的公式(5)确定缩放比例。在此情况下,在高度方向上对背景元素可以拉伸的高度值为0。进一步,服务器可以根据缩放比例对重组的第一图片进行等比例缩小或放大,得到第二图片。
extend_ration=(ht+Δhi)/hs (公式5)
其中,extend_ration可以表示缩放比例。
再例如,如果服务器在高度方向上对背景元素进行了拉伸,则服务器可以根据第一图片的宽度值、在宽度方向上对背景元素可以拉伸的宽度值以及目标宽度值,确定缩放比例。例如,服务器可以如下的公式(6)确定缩放比例。在此情况下,在宽度方向上对背景元素可以拉伸的宽度值为0。进一步,服务器可以根据缩放比例对重组的第一图片进行等比例缩小或放大,得到第二图片。
extend_ration=(wt+Δwi)/ws (公式6)
举例而言,重组的第一图片中的背景元素在宽度方向上拉伸106.7mm。服务器根据公式(5)可以确定缩放比例extend_ration=720/960=75%,即服务器可以将重组的第一图片等比例缩小到重组的第一图片的75%,得到第二图片,如图18所示。
需要说明的是,图7中各步骤的执行顺序仅为一种示例,本申请实施例对此并不限定。例如,服务器可以先对背景元素进行拉伸,再对重组后的第一图片进行等比例缩小或放大处理,也可以先对第一图片进行等比例缩小或放大处理,再对处理后的第一图片中的背景元素进行拉伸重组。再例如,服务器可以先确定第一图层和第二图层的锚点,再确定背景元素的伸缩向量,也可以先确定背景元素的伸缩向量,再确定第一图层和第二图层的锚点,还可以同时进行锚点的确定和背景元素的伸缩向量的确定。
在本申请的上述实施例中,第一图片与目标尺寸不匹配,通过对第一图层进行拉伸或压缩处理,再基于锚点集合重组第二图层与拉伸或压缩后的第一图层,可得到包括完整图像信息的第二图片,且第二图片与目标尺寸相匹配。一方面,第一图层为第一图片中部分或全部元素图像被遮挡的图层,意味着第一图层所包括的主体显著性特征较少,如纯色的背景元素,对其进行拉伸或压缩处理以匹配终端显示屏幕的尺寸的过程中,不会出现形变或失真的问题;另一方面,由于锚点是相对于图片参考坐标系中不变的一个坐标,可用于确定两个图层之间的相对位置,所以,通过锚点集合重组第二图层和拉伸或压缩后的第一图层,可以保证重组前后任意两个图层之间的相对位置不变。从视觉感官上来讲,重组前后,任意两个图层之间的相对位置没有发生变化,从而可以避免第一图片变换后所导致的失真的问题。
图7中主要从方法流程的角度对本申请提供的图片处理方法进行了介绍。可以理解的是,为了实现上述功能,装置可以包括执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
图19示出了本申请实施例中所涉及的图片处理装置的可能的示例性框图,该图片处理装置1900可以以软件的形式存在。图片处理装置1900可以包括:获取单元1901,配置单元1902,拉伸单元1903以及重组单元1904。
在一种可能的实施方式中,该图片处理装置1900可以为上述图2中的服务器200、或者还可以为设置在服务器200中的芯片。或者,该图片处理装置1900可以为上述图3中的终端300、或者还可以为设置在终端300中的芯片。
具体地,在一个实施例中,获取单元1901,可以用于获取第一图片,第一图片包括至少两个图层,第一图片用于在终端上显示,第一图片的尺寸与终端显示屏幕的尺寸不匹配;
配置单元1902,用于为至少两个图层中的任意两个图层配置锚点,得到锚点集合,其中,锚点用于确定任意两个图层之间的相对位置;
拉伸单元1903,用于根据终端显示屏幕的尺寸拉伸或压缩第一图层,拉伸或压缩后的第一图层的宽高比与终端显示屏幕的宽高比相同,其中,第一图层为至少两个图层中部分或全部元素图像被遮挡的一个或多个图层;
以及,重组单元1904,用于根据锚点集合,重组第二图层以及拉伸或压缩后的第一图层,得到第二图片,第二图片在终端显示时,第二图片的尺寸与终端显示屏幕的尺寸匹配;其中,第二图层为至少两个图层中元素图像未被遮挡的一个或多个图层。
在一种可能的设计中,任意两个图层包括第三图层和第四图层,配置单元1902,具体用于:
确定第三图层与第四图层之间的距离;
根据第三图层与第四图层之间的距离,为第三图层和第四图层配置锚点。
在一种可能的设计中,配置单元1902,具体用于:
在第三图层与第四图层之间的距离等于0的情况下,根据第三图层与第四图层之间的位置关系,为第三图层和第四图层配置锚点;或者,
在第三图层与第四图层之间的距离满足第一预设条件的情况下,根据第一像素对为第三图层和第四图层配置锚点,其中,第一像素对为第三图层与第四图层之间、满足第一预设条件的一对或多对像素点,第一预设条件为大于0且小于第一阈值;或者,
在第三图层与第四图层之间的距离大于第一阈值的情况下,确定第一图层的中心点和第四图层的中心点、为第三图层与第四图层之间的锚点。
在一种可能的设计中,配置单元1902,具体用于:
在第三图层与第四图层相接触的情况下,确定第三图层与第四图层之间的接触点、为第三图层与第四图层之间的锚点;或者,
在第三图层与第四图层相交的情况下,确定第三图层与第四图层的相交区域中的中心点、为第三图层与第四图层之间锚点;或者,
在第三图层包含第四图层的情况下,确定第三图层的中心点、为第三图层与第四图层之间的锚点。
在一种可能的设计中,配置单元1902,具体用于:
在第一像素对为一对像素点的情况下,确定一对像素点的中心点、为第三图层和第四图层之间的锚点;或者,
在第一像素对为多对像素点,且多对像素点中每对像素点之间的距离不同的情况下,确定多对像素点中距离最小的一对像素点的中心点、为第三图层与第四图层之间的锚点;或者,
在第一像素对为多对像素点,且多对像素点中每对像素点之间的距离相同的情况下,确定多对像素点的中心点、为第三图层与第四图层之间的锚点。
在一种可能的设计中,重组单元1903,具体用于:
根据锚点集合,重组拉伸或压缩后的第一图层以及第二图层,得到重组后的第一图片,重组后的第一图片的宽高比与终端显示屏幕的宽高比相同;
根据终端显示屏幕的尺寸等比例缩小或放大重组后的第一图片,得到第二图片。
在一种可能的设计中,图片处理装置2000还可以包括确定单元1904,该确定单元1904可用于:
确定第一图片的可裁剪区域,可裁剪区域为第一图片中除了最小外接水平矩形之外的区域,最小外接水平矩形为包括第二图层的最小水平矩形;
根据终端显示屏幕的尺寸,确定第一裁剪区域,第一裁剪区域为使得裁剪后的第一图片的宽高比与终端显示屏幕的宽高比相同所需要裁剪的最小区域;
确定第一裁剪区域位于第一图片的可裁剪区域之外。
在一种可能的实施方式中,图片处理装置1900还可以包括收发单元,用以实现图片处理装置1900的收发功能。例如,在图片处理装置1900为服务器200的情况下,收发单元可以接收来自终端300获取APP压缩文件的请求消息,以及向终端300发送第二图片。再例如,在图片处理装置1900为终端300的情况下,收发单元可以向服务器200发送获取APP压缩文件的请求消息,以及接收来自服务器200的APP压缩文件。
本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
如图20所示,本申请实施例还提供了另一种可能的图片处理装置的结构示意图。例如该图片处理装置2000可以为图2中的服务器200,或者为图3中的终端300。该图片处理装置2000中可以包括至少一个处理器2001和至少一个通信接口2002。进一步地,该图片处理装置2000中还可以包括存储器2003,所述存储器2003用于存储计算机程序或指令。所述存储器2003既可以是处理器2001内的存储器,也可以是处理器2001之外的存储器。
在图20中所描述的各单元模块为通过软件实现的情况下,所述处理器2001执行相应动作所需的软件或程序代码存储在存储器2003中。所述处理器2001用于执行存储器2003中的程序或指令,以实现上述实施例中图7或图12所示的步骤。通信接口2002用于实现该图片处理装置2000与其他装置之间的通信,例如,与服务器200之间的通信,或者,与终端300之间的通信。
在存储器2003置于处理器之外的情况下,所述存储器2003、处理器2001和通信接口2002通过总线2004相互连接,所述总线2004可以是外设部件互连标准(peripheralcomponent interconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。应理解,总线可以分为地址总线、数据总线、控制总线等。为便于表示,图20中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要说明的是,该图片处理装置2000中的各个模块的操作和/或功能分别为了实现图7或图12中所示方法的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供一种芯片***,包括:处理器,所述处理器与存储器耦合,所述存储器用于存储程序或指令,当所述程序或指令被所述处理器执行时,使得该芯片***可以实现上述图7或图12中所示的方法。
可选地,该芯片***中的处理器可以为一个或多个。该处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
可选地,该芯片***中的存储器也可以为一个或多个。该存储器可以与处理器集成在一起,也可以和处理器分离设置,本申请并不限定。示例性的,存储器可以是非瞬时性处理器,例如只读存储器ROM,其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型,以及存储器与处理器的设置方式不作具体限定。
示例性的,该芯片***可以是现场可编程门阵列(field programmable gatearray,FPGA),可以是专用集成芯片(application specific integrated circuit,ASIC),还可以是***芯片(system on chip,SoC),还可以是中央处理器(central processorunit,CPU),还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(micro controller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)或其他集成芯片。
应理解,上述方法实施例中的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
本申请实施例还提供一种计算机可读存储介质,所述计算机存储介质中存储有计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机实现上述图7或图12中所示的方法。
本申请实施例还提供一种计算机程序产品,当计算机读取并执行所述计算机程序产品时,使得计算机实现上述图7或图12中所示的方法。
应理解,本申请实施例中提及的处理器可以是中央处理单元(centralprocessing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double datarate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。