本申请涉及图片处理技术领域,尤其涉及一种图片处理方法及相关设备与系统。
背景技术:
终端用户在将同一图片素材投放至不同目标场景时,常需要按照这些目标场景所需要的尺寸对所述图片素材进行相应调整。
例如,若目标场景所需要的尺寸和图片素材的尺寸不同,但,目标场景所需要的图片比例和图片素材的图片比例相同,则可以采用图片等比缩放方式,对所述图片素材进行缩放,得到和所述图片素材的图片比例相同、且符合目标场景所需要的尺寸的图片。再例如,若目标场景所需要的尺寸和图片素材的尺寸不同,且,目标场景所需要的图片比例和图片素材的图片比例不相同,则可以采用不保持图片比例的缩放方式,对所述图片素材进行缩放,得到符合目标场景所需要的尺寸的图片。
也就是说,目前,图片等比缩放方案仅能应用于目标场景需求的图片比例和图片素材的图片比例相同的情况,但是,由于这种情况在图片投放场景中的比例很低,因此,绝大多数情况下,图片等比缩放方案并不能够满足实际需要,常需要使用不保持图片比例的缩放方式对图片素材进行缩放处理,或者,直接指示终端用户手动上传符合目标场景所需要的图片比例以及尺寸的图片。
但是,由于在使用不保持图片比例的缩放方式对图片素材进行缩放处理时,会较大幅度地扭曲图片,因而使得最终投放的图片并不精确,显示效果较差,无法满足用户的实际需求。另外,若要求终端用户为不同目标场景上传不 同的符合相应目标场景需求的图片,则一方面会极大地降低图片投放整个链条的速度,另一方面,还会占用大量的图片存储资源以及图片投放资源。
也就是说,在现有的图片投放场景中,存在单一图片素材无法满足众多投放场景的尺寸需求,导致多尺寸场景投放时图片素材适配的难度高的问题。
技术实现要素:
本申请实施例提供了一种图片处理方法及相关设备与系统,用以解决目前存在的多尺寸场景投放时图片素材适配的难度高的问题。
本申请实施例提供了一种图片处理方法,包括:
服务器接收第一终端发起的针对携带有设定核心区域信息的原始图片的图片获取请求,所述图片获取请求中携带有所述第一终端所需的目标图片的尺寸信息;
根据所述目标图片的尺寸信息,对所述原始图片进行裁剪,得到包含所述原始图片的核心区域且图片比例与所述目标图片的图片比例相同的裁剪图片;
根据所述目标图片的尺寸信息以及所述裁剪图片的尺寸信息,对所述裁剪图片进行缩放,得到尺寸与所述目标图片的尺寸相同的结果图片,并将所述结果图片返回给所述第一终端。
进一步地,本申请实施例还提供了另一种图片处理方法,包括:
第一终端向服务器发起针对携带有设定核心区域信息的原始图片的图片获取请求,所述图片获取请求中携带有所述第一终端所需的目标图片的尺寸信息;
接收所述服务器根据所述图片获取请求返回的结果图片,并将所述结果图片作为所需的目标图片;其中,所述结果图片是所述服务器根据所述目标图片的尺寸信息所得到的包含所述原始图片的核心区域且尺寸、图片比例与所述目标图片的尺寸、图片比例分别相同的图片。
相应地,本申请实施例提供了一种服务器,包括:
接收单元,用于接收第一终端发起的针对携带有设定核心区域信息的原始图片的图片获取请求,所述图片获取请求中携带有所述第一终端所需的目标图片的尺寸信息;
裁剪单元,用于根据所述目标图片的尺寸信息,对所述原始图片进行裁剪,得到包含所述原始图片的核心区域且图片比例与所述目标图片的图片比例相同的裁剪图片;
缩放单元,用于根据所述目标图片的尺寸信息以及所述裁剪图片的尺寸信息,对所述裁剪图片进行缩放,得到尺寸与所述目标图片的尺寸相同的结果图片;
发送单元,用于将所述结果图片返回给所述第一终端。
进一步地,本申请实施例还提供了一种终端,包括:
发送单元,用于向服务器发起针对携带有设定核心区域信息的原始图片的图片获取请求,所述图片获取请求中携带有所述终端所需的目标图片的尺寸信息;
接收单元,用于接收所述服务器根据所述图片获取请求返回的结果图片,并将所述结果图片作为所需的目标图片;其中,所述结果图片是所述服务器根据所述目标图片的尺寸信息所得到的包含所述原始图片的核心区域且尺寸、图片比例与所述目标图片的尺寸、图片比例分别相同的图片。
进一步地,本申请实施例还提供了一种图片处理系统,包括:
服务器,用于接收第一终端发起的针对携带有设定核心区域信息的原始图片的图片获取请求,所述图片获取请求中携带有所述第一终端所需的目标图片的尺寸信息;并根据所述目标图片的尺寸信息,对所述原始图片进行裁剪,得到包含所述原始图片的核心区域且图片比例与所述目标图片的图片比例相同的裁剪图片;以及,根据所述目标图片的尺寸信息以及所述裁剪图片的尺寸信息,对所述裁剪图片进行缩放,得到尺寸与所述目标图片的尺寸相同的结果图片,并将所述结果图片返回给所述第一终端;
第一终端,用于向服务器发起针对携带有设定核心区域信息的原始图片的图片获取请求,并接收所述服务器根据所述图片获取请求返回的结果图片,以及,将所述结果图片作为所需的目标图片。
本申请有益效果如下:
本申请实施例提供了一种图片处理方法及相关设备与系统,可根据目标图片的尺寸信息,对携带有设定核心区域信息的原始图片进行裁剪,得到包含原始图片的核心区域且图片比例与目标图片的图片比例相同的裁剪图片,并根据目标图片的尺寸信息以及裁剪图片的尺寸信息,对裁剪图片进行缩放,得到包含原始图片的核心区域且尺寸、图片比例与目标图片的尺寸、图片比例分别相同的结果图片,从而可在保证原始图片的核心区域不被错误裁剪进而提高图片适配的精确度的基础上,大幅度降低多尺寸场景投放时图片素材适配的难度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1所示为本申请实施例一中所述图片处理方法的流程示意图;
图2所示为本申请实施例二中所述图片处理方法的流程示意图;
图3所示为本申请实施例三中所述图片处理方法的流程示意图;
图4所示为本申请实施例四中所述服务器的结构示意图;
图5所示为本申请实施例四中所述终端的结构示意图;
图6所示为本申请实施例四中所述图片处理系统的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申 请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
实施例一:
本申请实施例提供了一种图片处理方法,如图1所示,其为本申请实施例一中所述图片处理方法的流程示意图,所述方法可包括以下步骤:
步骤101:服务器接收第一终端发起的针对携带有设定核心区域信息的原始图片的图片获取请求,所述图片获取请求中携带有所述第一终端所需的目标图片的尺寸信息。
可选地,在所述步骤101中,所述图片获取请求可以是所述第一终端通过HTTP(Hyper Text Transfer Protocol,超文本传输协议)API(Application Program Interface,应用程序编程接口)向所述服务器发起的,或者是根据其他程序下发的程序调用指令,向所述服务器发起的,本申请实施例对此不作任何限定。另外,所述图片获取请求还可以是所述第一终端基于所述原始图片的地址信息,如所述原始图片的URL(Uniform Resource Locator,统一资源定位符)等所发起的,本申请实施例对此不作赘述。
步骤102:根据所述目标图片的尺寸信息,对所述原始图片进行裁剪,得到包含所述原始图片的核心区域且图片比例与所述目标图片的图片比例相同的裁剪图片。
可选地,在所述步骤102中,所述服务器可根据所述目标图片的尺寸信息,采用以所述原始图片的核心区域为基础,向四周扩展像素的裁剪方式对所述原始图片进行裁剪,以保证所述原始图片的核心区域信息不被错误裁剪。
例如,所述服务器可采用以所述原始图片的核心区域为基础,向四周扩展像素的方式,确定对所述原始图片进行裁剪时所依据的裁剪区域;并根据所述裁剪区域,对所述原始图片进行裁剪,得到包含所述原始图片的核心区域且图片比例与所述目标图片的图片比例相同的裁剪图片,其中,所述裁剪区域包含 所述原始图片的核心区域且对应的图片比例与所述目标图片的图片比例相同。
需要说明的是,在本申请所述实施例中,如无特殊说明,图片的图片比例通常可指的是图片的宽高比,当然,还可指的是图片的高宽比,本申请实施例对此不作赘述。另外,本申请实施例中所述的各图片(如所述原始图片)可为任意格式的图片,如遵循Exif(Exchangeable image file format,可交换图像文件)标准的图片等,本申请实施例对此也不作赘述。
具体地,采用以所述原始图片的核心区域为基础,向四周扩展像素的方式,确定对所述原始图片进行裁剪时所依据的裁剪区域,可包括:
将所述原始图片的核心区域的起始坐标点(xcore,ycore)设置为所述裁剪区域的起始坐标点(xfinal,yfinal);其中,所述原始图片的核心区域的起始坐标点(xcore,ycore)可根据预先设定的所述原始图片的核心区域信息而确定,其中,预先设定的所述原始图片的核心区域信息通常可包括所述原始图片的核心区域的起始坐标点信息,以及所述原始图片的核心区域的尺寸信息,如宽度Wcore、高度Hcore等信息;
计算当所述裁剪区域的宽度为所述原始图片的核心区域的宽度Wcore时,符合所述目标图片所具备的图片比例Ratiotarget的初始高度Htemp;其中,所述目标图片所具备的图片比例Ratiotarget可根据所述目标图片的尺寸信息(如宽度、高度)而确定;
若确定所述初始高度Htemp大于所述原始图片的核心区域的高度Hcore,则表示需要在所述原始图片的核心区域的基础上在纵向扩展像素,因而,可计算所述原始图片的纵向可扩展像素高度Havailable=Horiginal–Htemp,其中,所述Horiginal为所述原始图片的高度;并在确定所述Havailable不小于Htemp–Hcore时,确定当前需要填充的像素高度Hneeded=Htemp–Hcore,并根据所述Hneeded向所述原始图片的核心区域的纵轴两侧等量扩展像素,直至在确定所述原始图片的核心区域的纵轴两侧的任一侧不再存在可用像素时,继续向所述纵轴两侧的另一侧扩展像素,直至确定扩展后的区域的高度等于Htemp时,更新yfinal的值,并将扩展后 的区域作为所述裁剪区域;需要说明的是,若确定所述Havailable小于Htemp–Hcore,则表示图片剩余像素不足以填充所需要的像素数量,裁剪失败,计算结束;
或者,若确定所述初始高度Htemp小于所述原始图片的核心区域的高度Hcore,则表示此时为了保持目标图片的图片比例,需要裁剪原始图片的核心区域,但是,由于在本申请所述实施例中,在进行图片裁剪时,通常需要保证原始图片的核心区域完整可见,因而,此时可以转而维持核心区域的高度,即:
计算当所述裁剪区域的高度为所述原始图片的核心区域的高度Hcore时,符合所述目标图片所具备的图片比例Ratiotarget的初始宽度Wtemp;并若确定所述初始宽度Wtemp大于所述原始图片的核心区域的宽度Wcore,则表示需要在所述原始图片的核心区域的基础上在横向扩展像素,因而,可计算所述原始图片的横向可扩展像素宽度Wavailable=Woriginal–Wtemp,其中,所述Woriginal为所述原始图片的宽度;并在确定所述Wavailable不小于Wtemp–Wcore时,确定当前需要填充的像素宽度Wneeded=Wtemp–Wcore,并根据所述Wneeded向所述原始图片的核心区域的横轴两侧等量扩展像素,直至在确定所述原始图片的核心区域的横轴两侧的任一侧不再存在可用像素时,继续向所述横轴两侧的另一侧扩展像素,直至确定扩展后的区域的宽度等于Wtemp时,更新xfinal的值,并将扩展后的区域作为所述裁剪区域;需要说明的是,若确定所述Wavailable小于Wtemp–Wcore,则表示图片剩余像素不足以填充所需要的像素数量,裁剪失败,计算结束;
或者,若确定所述初始高度Htemp等于所述原始图片的核心区域的高度Hcore,则将所述原始图片的核心区域作为所述裁剪区域。
至此,即可得到相应的包含所述原始图片的核心区域且对应的图片比例与所述目标图片的图片比例相同的裁剪区域。
进一步地,需要说明的是,在本申请所述实施例中,在接收第一终端发起的针对携带有设定核心区域信息的原始图片的图片获取请求之前,所述方法还可包括以下步骤:
接收第二终端上传的与所述原始图片相对应的初始原始图片(即不携带有 任何核心区域信息的初始图片),以及用于生成所述设定核心区域信息的可适配比例范围信息;其中,所述第二终端与所述第一终端可为同一终端或不同终端;所述可适配比例范围信息可指的是可适配宽高比或可适配高宽比等信息;
根据所述初始原始图片的尺寸信息以及所述可适配比例范围信息,确定与所述初始原始图片相对应、且与所述可适配比例范围信息相对应的可用最大核心区域,并指示所述第二终端上传与所述初始原始图片相对应、且对应的尺寸不大于所述可用最大核心区域的尺寸的核心区域信息;
接收所述第二终端根据所述指示上传的核心区域信息,并将所述第二终端上传的核心区域信息作为所述初始原始图片的、与所述可适配比例范围信息相对应的核心区域信息;
将所述初始原始图片的、与所述可适配比例范围信息相对应的核心区域信息写入所述初始原始图片的拷贝文件中,得到与所述初始原始图片相对应、且携带有所述设定核心区域信息的原始图片。
也就是说,在本申请所述实施例中,所述服务器在接收第一终端发起的针对携带有设定核心区域信息的原始图片的图片获取请求之前,可接收第二终端上传的与所述原始图片相对应的初始原始图片,以及用于生成所述设定核心区域信息的可适配比例范围信息,并基于所述初始原始图片的尺寸信息以及所述可适配比例范围信息,通过与所述第二终端进行交互的方式确定所述初始原始图片的、与所述可适配比例范围信息相对应的核心区域信息,并将所述初始原始图片的、与所述可适配比例范围信息相对应的核心区域信息写入所述初始原始图片的拷贝文件中,得到与所述初始原始图片相对应、且携带有所述设定核心区域信息的原始图片,从而使得后续可基于根据所述可适配比例范围信息所确定的所述设定核心区域信息,得到所述可适配比例范围内的、包含所述核心区域信息的任意尺寸的素材图片,从而可在保证原始图片的核心区域信息不被错误裁剪进而提高图片适配的精确度的基础上,大幅度降低多尺寸场景投放时图片素材适配的难度。
进一步地,需要说明的是,针对任一初始原始图片,服务器可接收第二终端上传的与所述初始原始图片相对应的多组可适配比例范围信息,以便可根据所述多组可适配比例范围信息,生成多个携带有不同的核心区域信息的原始图片,本申请实施例对此不作赘述。
进一步地,根据所述初始原始图片的尺寸信息以及与所述可适配比例范围信息,确定与所述初始原始图片相对应的可用最大核心区域,可包括:
确定所述可适配比例范围信息中的最小比例Ratiomin以及最大比例Ratiomax;
根据所述初始原始图片的尺寸信息,计算维持所述最小比例Ratiomin所需的最大宽度Wmin、维持所述最小比例Ratiomin所需的最大高度Hmin,以及维持所述最大比例Ratiomax所需的最大宽度Wmax、维持所述最大比例Ratiomax所需的最大高度Hmax;
根据计算出的维持最小比例Ratiomin所需的最大宽度Wmin、最大高度Hmin,以及维持最大比例Ratiomax所需的最大宽度Wmax、最大高度Hmax,采用以下公式确定与所述初始原始图片相对应、且与所述可适配比例范围信息相对应的可用最大核心区域:
Wfinal=Min(Wmin,Wmax),Hfinal=Min(Hmin,Hmax);
其中,Wfinal为所述可用最大核心区域的宽度,Hfinal为所述可用最大核心区域的高度。
可选地,根据所述初始原始图片的尺寸信息,计算维持所述最小比例Ratiomin所需的最大宽度Wmin、维持所述最小比例Ratiomin所需的最大高度Hmin,可包括:
根据所述初始原始图片的宽度p_w,计算保持图片宽度为所述初始原始图片的宽度p_w的情况下,维持最小比例Ratiomin所需的第一高度,并在确定所述第一高度不大于所述初始原始图片的高度p_h时,将所述初始原始图片的宽度p_w作为维持最小比例Ratiomin所需的最大宽度Wmin,将所述第一高度作为 维持最小比例Ratiomin所需的最大高度Hmin,即可得到Wmin=p_w,Hmin=p_w/Ratiomin;或者,在确定所述第一高度大于所述初始原始图片的高度p_h时,计算保持图片高度为所述初始原始图片的高度p_h的情况下,维持最小比例Ratiomin所需的第一宽度,并将所述第一宽度作为维持最小比例Ratiomin所需的最大宽度Wmin,将所述初始原始图片的高度p_h作为维持最小比例Ratiomin所需的最大高度Hmin,即可得到Wmin=p_h*Ratiomin,以及,Hmin=p_h。
类似地,根据所述初始原始图片的尺寸信息,计算维持所述最大比例Ratiomax所需的最大宽度Wmax、维持所述最大比例Ratiomax所需的最大高度Hmax,可包括:
根据所述初始原始图片的宽度p_w,计算保持图片宽度为所述初始原始图片的宽度p_w的情况下,维持最大比例Ratiomax所需的第二高度,并在确定所述第二高度不大于所述初始原始图片的高度p_h时,将所述初始原始图片的宽度p_w作为维持最大比例Ratiomax所需的最大宽度Wmax,将所述第二高度作为维持最大比例Ratiomax所需的最大高度Hmax,即可得到Wmax=p_w,Hmin=p_w/Ratiomax;或者,在确定所述第二高度大于所述初始原始图片的高度p_h时,计算保持图片高度为所述初始原始图片的高度p_h的情况下,维持最大比例Ratiomax所需的第二宽度,并将所述第二宽度作为维持最大比例Ratiomax所需的最大宽度Wmax,将所述初始原始图片的高度p_h作为维持最大比例Ratiomax所需的最大高度Hmax,即可得到Wmax=p_h*Ratiomax,以及,Hmax=p_h。
进一步地,在本申请所述实施例中,在将所述初始原始图片的、与所述可适配比例范围信息相对应的核心区域信息写入所述初始原始图片中,得到与所述初始原始图片相对应、且携带有所述设定核心区域信息的原始图片之后,所述方法还可包括:
将携带有所述设定核心区域信息的原始图片上传至对应的FS(File System,文件系统)中;以及,将携带有所述设定核心区域信息的原始图片的 地址返回至服务器前端进行展现,以便各第一终端可根据所述原始图片的地址信息,发起相应的图片获取请求。
进一步地,需要说明的是,在FS中,携带有所述设定核心区域信息的原始图片可以“原始图片的地址”+“对应的可适配比例范围信息”等的方式进行命名存储,以便于用户查找,本申请实施例对此不作赘述。
步骤103:根据所述目标图片的尺寸信息以及所述裁剪图片的尺寸信息,对所述裁剪图片进行缩放,得到尺寸与所述目标图片的尺寸相同的结果图片,并将所述结果图片返回给所述第一终端。
具体地,可根据目标图片的尺寸信息(如宽度)以及裁剪图片的尺寸信息(如宽度),计算缩放比例R,如计算得到R=W目标图片/W裁剪图片;并根据所述缩放比例R对所述裁剪图片进行缩放,得到尺寸与所述目标图片的尺寸相同的结果图片。需要说明的是,由于目标图片的图片比例与裁剪图片的图片比例相同,因而,最终得到的结果图片的尺寸、图片比例与所述目标图片的尺寸、图片比例分别相同,本申请实施例对此不作赘述。
本申请实施例一提供了一种图片处理方法,在本申请所述实施例一中,可根据目标图片的尺寸信息,对携带有设定核心区域信息的原始图片进行裁剪,得到包含原始图片的核心区域且图片比例与目标图片的图片比例相同的裁剪图片,并根据目标图片的尺寸信息以及裁剪图片的尺寸信息,对裁剪图片进行缩放,得到包含原始图片的核心区域且尺寸、图片比例与目标图片的尺寸、图片比例分别相同的结果图片,从而可在保证原始图片的核心区域不被错误裁剪进而提高图片适配的精确度的基础上,大幅度降低多尺寸场景投放时图片素材适配的难度。
实施例二:
本申请实施例二提供了一种图片处理方法,该图片处理方法为对本申请实施例一中所述图片处理方法的详细说明,如图2所示,该图片处理方法可包括以下步骤:
步骤201:标示初始原始图片的核心区域。
具体地,为了保证用户上传的初始原始图片的核心内容在最终得到的结果图片中能够完整展现,需要用户在相应的服务器页面上标示初始原始图片的核心区域。
可选地,在该步骤201中,用户可先上传初始原始图片,并指定与该初始原始图片相对应的适配比例范围。之后,服务器可将该初始原始图片上传至对应的文件系统中,并将得到的图片地址(如图片URL,即图片链接)返回至前端页面展现。之后,服务器可根据该初始原始图片的尺寸和对应的适配比例范围决定用户可选择的最大核心区域,并要求用户提交不大于该最大核心区域所对应的尺寸的核心区域数据。
其中,假设初始原始图片的宽度为p_w,高度为p_h,对应的适配比例范围为w1:h1~w2:h2,则该最大核心区域可通过以下方式计算得到:
确定该适配比例范围中的最小比例Ratiomin以及最大比例Ratiomax;
计算保持图片宽度为p_w的情况下,维持最小比例Ratiomin所需的第一高度;若该第一高度<=p_h,则将该p_w作为维持最小比例Ratiomin所需的最大宽度Wmin,将该第一高度作为维持最小比例Ratiomin所需的最大高度Hmin,即可得到Wmin=p_w,Hmin=p_w/Ratiomin;
若该第一高度>p_h,则表示该初始原始图片无论如何都无法在维持宽度不变的情况下保证最小比例,因而可改为维持高度,此时可得到:
Wmin=p_h*Ratiomin,以及,Hmin=p_h;
依此类推,即可得到维持最大比例Ratiomax所需的最大高度Hmax和最大宽度Wmax;进而即可得到用户可用最大核心区域的尺寸信息,即:
Hfinal=Min(Hmin,Hmax);
Wfinal=Min(Wmin,Wmax)。
步骤202:保存初始原始图片的核心区域。
可选地,用户在按照步骤201所得到的最大核心区域提交对应的核心区域数据后,该核心区域数据将被发送至服务器后台。之后,服务器可再次从对应的文件系统中请求初始原始图片,并将获取到的该初始原始图片的拷贝文件临时存储在内存中,之后,可将该核心区域信息写入该初始原始图片的拷贝文件中(如拷贝文件的Exif数据中),得到与该初始原始图片相对应的携带有相应核心区域信息的拷贝文件(其中,该携带有相应核心区域信息的拷贝文件即为本申请中所述的携带有相应核心区域信息的原始图片),并将携带相应核心区域信息的拷贝图片重新上传至对应的文件系统中,以及,将该拷贝图片的图片地址返回至服务器前端进行展现。
步骤203:提供图片裁剪服务。
具体地,当用户获知一个携带了核心区域信息的原始图片的地址,如URL后,便可以通过HTTP API,获取在与该原始图片相对应的适配比例范围内的任意尺寸的图片素材。
可选地,用户可以通过如下的HTTP API发起图片获取请求访问素材:
http://<服务地址>/<原始图片地址>.jpg_[width]x[height].jpg;其中,该语句中的width、height分别指的是用户所需的目标图片的宽度、高度等尺寸信息。
进一步地,当服务器接收到用户发起的图片获取请求后,可首先查找文件系统中是否缓存了用户所需的目标图片,若是,则可直接返回该目标图片,以加快处理速度;其中,当确定文件系统中缓存有包含所述原始图片的核心区域、且尺寸、图片比例与目标图片的尺寸、图片比例分别相同的图片时,可认为文件系统中缓存有该目标图片;
若否,则将按照本申请提供的裁剪算法对所述原始图片进行裁剪,得到包含所述原始图片的核心区域且图片比例与所述目标图片的图片比例相同的裁剪图片,并根据所述目标图片的尺寸信息以及所述裁剪图片的尺寸信息,对所述裁剪图片进行缩放,得到尺寸与所述目标图片的尺寸相同的结果图片,并将所述结果图片返回给对应的用户。
其中,本申请所述的裁剪算法采用的是以原始图片的核心区域为基础,向四周扩展像素的方式。具体步骤可包括:
获取目标图片的尺寸信息,如目标图片的宽度Wtarget,高度Htarget,从而计算目标图片所具备的图片比例Ratiotarget;
获取原始图片的尺寸信息,如原始图片的宽度Worignal,高度Horignal;
获取原始图片的核心区域信息,包括核心区域的起始坐标点信息(xcore,ycore),核心区域的宽度Wcore、高度Hcore等;
设置裁剪目标为:
计算保持核心区域宽度时,符合Ratiotarget的初始高度Htemp;
若Htemp>Hcore,则表示需要在所述原始图片的核心区域的基础上在纵向扩展像素,因而,可计算当前图片可用于扩展的剩余像素数量Havailable=Horiginal–Htemp;
若Havailable<Horiginal–Htemp,则表示图片剩余像素不足以填充所需要的像素数量,裁剪失败,计算结束;
若Havailable>=Horiginal–Htemp,则可得到当前需要填充的像素数量为Hneeded=Htemp–Hcore,之后向核心区域的y轴两侧等量扩展,直到其中一侧没有可用像素,则继续向另一侧扩展像素,同时更新yfinal的值,直到区域高度等于Htemp,此时可得到一个图片比例与目标图片的图片比例相同的裁剪区域,并且该裁剪区域完整包含了原始图片的核心区域;
若Htemp<Hcore,则表示此时为了保持目标图片的图片比例,需要裁剪原始图片的核心区域,但是,由于在本申请所述实施例中,在进行图片裁剪时,通 常需要保证原始图片的核心区域完整可见,因而,此时可以转而维持核心区域的高度,即:计算符合Ratiotarget的初始宽度Wtemp,并采用和上一步类似的算法获取裁剪区域;
若Htemp=Hcore,则表示目标图片的图片比例和核心区域的图片比例恰好相等,因而,可将所述原始图片的核心区域直接作为裁剪区域。
经过上述步骤,即可得到相应的包含原始图片的核心区域且对应的图片比例与目标图片的图片比例相同的裁剪区域,使用该裁剪区域对图片裁剪,即可得到包含所述原始图片的核心区域且图片比例与所述目标图片的图片比例相同的裁剪图片。
需要说明的是,本申请实施例中所述的核心区域标示和裁剪等操作可基于根据Node.js等搭建的Web应用实现,其中,Node.js是一套用来编写高性能网络服务器的JavaScript工具包,本申请实施例对此不作赘述。
实施例三:
基于同一发明构思,本申请实施例三提供了一种以第一终端为执行主体的图片处理方法,如图3所示,其为本申请实施例三中所述图片处理方法的流程示意图,所述方法可包括以下步骤:
步骤301:第一终端向服务器发起针对携带有设定核心区域信息的原始图片的图片获取请求,所述图片获取请求中携带有所述第一终端所需的目标图片的尺寸信息。
具体地,与步骤101中的相关描述类似,所述图片获取请求可以是所述第一终端通过HTTP API发起的;另外,所述图片获取请求还可以是所述第一终端基于所述原始图片的地址信息,如所述原始图片的URL等所发起的,本申请实施例对此均不作赘述。
步骤302:接收所述服务器根据所述图片获取请求返回的结果图片,并将所述结果图片作为所需的目标图片;其中,所述结果图片是所述服务器根据所述目标图片的尺寸信息所得到的包含所述原始图片的核心区域且尺寸、图片比 例与所述目标图片的尺寸、图片比例分别相同的图片。
也就是说,在本申请所述实施例中,服务器返给第一终端的结果图片为包含所述原始图片的核心区域且尺寸、图片比例与所述目标图片的尺寸、图片比例分别相同的图片,从而可在保证原始图片的核心区域不被错误裁剪进而提高图片适配的精确度的基础上,大幅度降低多尺寸场景投放时图片素材适配的难度。
进一步地,在向所述服务器发起图片获取请求之前,所述方法还可包括以下步骤:
向所述服务器上传与所述原始图片相对应的初始原始图片,以及用于生成所述设定核心区域信息的可适配比例范围信息;
接收所述服务器下发的用于指示所述第一终端上传核心区域信息的指示信息;
根据所述服务器下发的用于指示所述第一终端上传核心区域信息的指示信息,上传与所述初始原始图片相对应、且对应的尺寸不大于所述初始原始图片的与所述可适配比例范围信息相对应的可用最大核心区域的尺寸的核心区域信息;
其中,所述初始原始图片的与所述可适配比例范围信息相对应的可用最大核心区域是所述服务器根据所述初始原始图片的尺寸信息以及所述可适配比例范围信息所确定的。
也就是说,在向所述服务器发起图片获取请求之前,所述第一终端还可执行向服务器上传初始原始图片、为上传的初始原始图片指定可适配比例范围、以及,向服务器上传相应的核心区域信息等操作,本申请实施例对此不作赘述。
实施例四:
基于同一发明构思,本申请实施例四提供了一种服务器,该服务器的具体实施可参见上述方法实施例一中的相关描述,重复之处不再赘述,如图4所示,该服务器主要可包括:
接收单元41,可用于接收第一终端发起的针对携带有设定核心区域信息的原始图片的图片获取请求,所述图片获取请求中携带有所述第一终端所需的目标图片的尺寸信息;可选地,所述接收单元41具体可用于接收所述第一终端通过HTTP API等发起的针对原始图片的图片获取请求;
裁剪单元42,可用于根据所述目标图片的尺寸信息,对所述原始图片进行裁剪,得到包含所述原始图片的核心区域且图片比例与所述目标图片的图片比例相同的裁剪图片;
缩放单元43,可用于根据所述目标图片的尺寸信息以及所述裁剪图片的尺寸信息,对所述裁剪图片进行缩放,得到尺寸与所述目标图片的尺寸相同的结果图片;
发送单元44,可用于将所述结果图片返回给所述第一终端。
进一步地,所述服务器还可包括预处理单元45:
所述预处理单元45,可用于在接收第一终端发起的针对携带有设定核心区域信息的原始图片的图片获取请求之前,接收第二终端上传的与所述原始图片相对应的初始原始图片,以及用于生成所述设定核心区域信息的可适配比例范围信息;根据所述初始原始图片的尺寸信息以及所述可适配比例范围信息,确定与所述初始原始图片相对应、且与所述可适配比例范围信息相对应的可用最大核心区域,并指示所述第二终端上传与所述初始原始图片相对应、且对应的尺寸不大于所述可用最大核心区域的尺寸的核心区域信息;以及,接收所述第二终端根据所述指示上传的核心区域信息,并将所述第二终端上传的核心区域信息作为所述初始原始图片的、与所述可适配比例范围信息相对应的核心区域信息;以及,将所述初始原始图片的、与所述可适配比例范围信息相对应的核心区域信息写入所述初始原始图片的拷贝文件中,得到与所述初始原始图片相对应、且携带有所述设定核心区域信息的原始图片;其中,所述第二终端与所述第一终端为同一终端或不同终端。
可选地,所述预处理单元45具体可用于确定所述可适配比例范围信息中的最小比例Ratiomin以及最大比例Ratiomax,并根据所述初始原始图片的尺寸信息,计算维持所述最小比例Ratiomin所需的最大宽度Wmin、维持所述最小比例Ratiomin所需的最大高度Hmin,以及维持所述最大比例Ratiomax所需的最大宽度Wmax、维持所述最大比例Ratiomax所需的最大高度Hmax;以及,根据以下公式,确定与所述初始原始图片相对应、且与所述可适配比例范围信息相对应的可用最大核心区域:
Wfinal=Min(Wmin,Wmax),Hfinal=Min(Hmin,Hmax);
其中,Wfinal为所述可用最大核心区域的宽度,Hfinal为所述可用最大核心区域的高度。
进一步地,所述预处理单元45具体可用于根据所述初始原始图片的宽度p_w,计算保持图片宽度为所述初始原始图片的宽度p_w的情况下,维持最小比例Ratiomin所需的第一高度,并在确定所述第一高度不大于所述初始原始图片的高度p_h时,将所述初始原始图片的宽度p_w作为维持最小比例Ratiomin所需的最大宽度Wmin,将所述第一高度作为维持最小比例Ratiomin所需的最大高度Hmin;或者,在确定所述第一高度大于所述初始原始图片的高度p_h时,计算保持图片高度为所述初始原始图片的高度p_h的情况下,维持最小比例Ratiomin所需的第一宽度,并将所述第一宽度作为维持最小比例Ratiomin所需的最大宽度Wmin,将所述初始原始图片的高度p_h作为维持最小比例Ratiomin所需的最大高度Hmin;以及,
根据所述初始原始图片的宽度p_w,计算保持图片宽度为所述初始原始图片的宽度p_w的情况下,维持最大比例Ratiomax所需的第二高度,并在确定所述第二高度不大于所述初始原始图片的高度p_h时,将所述初始原始图片的宽度p_w作为维持最大比例Ratiomax所需的最大宽度Wmax,将所述第二高度作为维持最大比例Ratiomax所需的最大高度Hmax;或者,在确定所述第二高度大于所述初始原始图片的高度p_h时,计算保持图片高度为所述初始原始 图片的高度p_h的情况下,维持最大比例Ratiomax所需的第二宽度,并将所述第二宽度作为维持最大比例Ratiomax所需的最大宽度Wmax,将所述初始原始图片的高度p_h作为维持最大比例Ratiomax所需的最大高度Hmax。
进一步地,所述裁剪单元42具体可用于采用以所述原始图片的核心区域为基础,向四周扩展像素的方式,确定对所述原始图片进行裁剪时所依据的裁剪区域,其中,所述裁剪区域包含所述原始图片的核心区域且对应的图片比例与所述目标图片的图片比例相同;以及,根据所述裁剪区域,对所述原始图片进行裁剪,得到包含所述原始图片的核心区域且图片比例与所述目标图片的图片比例相同的裁剪图片。
其中,所述裁剪单元42具体可用于通过以下方式确定对所述原始图片进行裁剪时所依据的裁剪区域:
将所述原始图片的核心区域的起始坐标点(xcore,ycore)设置为所述裁剪区域的起始坐标点(xfinal,yfinal);
计算当所述裁剪区域的宽度为所述原始图片的核心区域的宽度Wcore时,符合所述目标图片所具备的图片比例Ratiotarget的初始高度Htemp;
若确定所述初始高度Htemp大于所述原始图片的核心区域的高度Hcore,则计算所述原始图片的纵向可扩展像素高度Havailable=Horiginal–Htemp,其中,所述Horiginal为所述原始图片的高度;并在确定所述Havailable不小于Htemp–Hcore时,确定当前需要填充的像素高度Hneeded=Htemp–Hcore,并根据所述Hneeded向所述原始图片的核心区域的纵轴两侧等量扩展像素,直至在确定所述原始图片的核心区域的纵轴两侧的任一侧不再存在可用像素时,继续向所述纵轴两侧的另一侧扩展像素,直至确定扩展后的区域的高度等于Htemp时,更新yfinal的值,并将扩展后的区域作为所述裁剪区域;或者,
若确定所述初始高度Htemp小于所述原始图片的核心区域的高度Hcore,则计算当所述裁剪区域的高度为所述原始图片的核心区域的高度Hcore时,符合所述目标图片所具备的图片比例Ratiotarget的初始宽度Wtemp;并若确定所述初始 宽度Wtemp大于所述原始图片的核心区域的宽度Wcore,则计算所述原始图片的横向可扩展像素宽度Wavailable=Woriginal–Wtemp,其中,所述Woriginal为所述原始图片的宽度;并在确定所述Wavailable不小于Wtemp–Wcore时,确定当前需要填充的像素宽度Wneeded=Wtemp–Wcore,并根据所述Wneeded向所述原始图片的核心区域的横轴两侧等量扩展像素,直至在确定所述原始图片的核心区域的横轴两侧的任一侧不再存在可用像素时,继续向所述横轴两侧的另一侧扩展像素,直至确定扩展后的区域的宽度等于Wtemp时,更新xfinal的值,并将扩展后的区域作为所述裁剪区域;或者,
若确定所述初始高度Htemp等于所述原始图片的核心区域的高度Hcore,则将所述原始图片的核心区域作为所述裁剪区域。
进一步地,基于同一发明构思,本申请实施例四还提供了一种终端,该终端的具体实施可参见上述方法实施例三中的相关描述,重复之处不再赘述,如图5所示,该终端主要可包括:
发送单元51,可用于向服务器发起针对携带有设定核心区域信息的原始图片的图片获取请求,所述图片获取请求中携带有所述终端所需的目标图片的尺寸信息;
接收单元52,可用于接收所述服务器根据所述图片获取请求返回的结果图片,并将所述结果图片作为所需的目标图片;其中,所述结果图片是所述服务器根据所述目标图片的尺寸信息所得到的包含所述原始图片的核心区域且尺寸、图片比例与所述目标图片的尺寸、图片比例分别相同的图片。
进一步地,所述发送单元51,还可用于在向所述服务器发起图片获取请求之前,向所述服务器上传与所述原始图片相对应的初始原始图片,以及用于生成所述设定核心区域信息的可适配比例范围信息;
所述接收单元52,还可用于接收所述服务器下发的用于指示所述终端上传核心区域信息的指示信息;
相应地,所述发送单元51,还可用于根据所述服务器下发的用于指示所述 终端上传核心区域信息的指示信息,上传与所述初始原始图片相对应、且对应的尺寸不大于所述初始原始图片的与所述可适配比例范围信息相对应的可用最大核心区域的尺寸的核心区域信息;其中,所述初始原始图片的与所述可适配比例范围信息相对应的可用最大核心区域是所述服务器根据所述初始原始图片的尺寸信息以及所述可适配比例范围信息所确定的。
进一步地,基于同一发明构思,本申请实施例四还提供了一种图片处理系统,该图片处理系统的具体实施可参见上述方法实施例一中的相关描述,重复之处不再赘述,如图6所示,该图片处理系统主要可包括服务器61以及第一终端62,其中:
服务器61,可用于接收第一终端62发起的针对携带有设定核心区域信息的原始图片的图片获取请求,所述图片获取请求中携带有所述第一终端62所需的目标图片的尺寸信息;并根据所述目标图片的尺寸信息,对所述原始图片进行裁剪,得到包含所述原始图片的核心区域且图片比例与所述目标图片的图片比例相同的裁剪图片;以及,根据所述目标图片的尺寸信息以及所述裁剪图片的尺寸信息,对所述裁剪图片进行缩放,得到尺寸与所述目标图片的尺寸相同的结果图片,并将所述结果图片返回给所述第一终端62;
第一终端62,可用于向服务器61发起针对原始图片的图片获取请求,并接收所述服务器根据所述图片获取请求返回的结果图片,以及,将所述结果图片作为所需的目标图片。
进一步地,所述图片处理系统还可包括第二终端63,其中,所述第二终端63与所述第一终端62为同一终端或不同终端:
第二终端63,可用于在服务器61接收第一终端62发起的针对携带有设定核心区域信息的原始图片的图片获取请求之前,向所述服务器61上传与所述原始图片相对应的初始原始图片,以及用于生成所述设定核心区域信息的可适配比例范围信息;以及,根据所述服务器61下发的用于指示所述第二终端63上传核心区域信息的指示信息,上传与所述初始原始图片相对应、且对应的尺 寸不大于所述初始原始图片的与所述可适配比例范围信息相对应的可用最大核心区域的尺寸的核心区域信息;其中,所述初始原始图片的与所述可适配比例范围信息相对应的可用最大核心区域是所述服务器61根据所述初始原始图片的尺寸信息以及所述可适配比例范围信息所确定的。
相应地,所述服务器61,还可用于接收第二终端63上传的与所述原始图片相对应的初始原始图片,以及用于生成所述设定核心区域信息的可适配比例范围信息;根据所述初始原始图片的尺寸信息以及所述可适配比例范围信息,确定与所述初始原始图片相对应、且与所述可适配比例范围信息相对应的可用最大核心区域,并指示所述第二终端63上传与所述初始原始图片相对应、且对应的尺寸不大于所述可用最大核心区域的尺寸的核心区域信息;接收所述第二终端63根据所述指示上传的核心区域信息,并将所述第二终端63上传的核心区域信息作为所述初始原始图片的、与所述可适配比例范围信息相对应的核心区域信息;将所述初始原始图片的、与所述可适配比例范围信息相对应的核心区域信息写入所述初始原始图片的拷贝文件中,得到与所述初始原始图片相对应、且携带有所述设定核心区域信息的原始图片。
需要说明的是,本申请实施例中所述的终端可为手机、平板电脑等实体设备,也可为设置在上述实体设备中的客户端等软件设备,本申请实施例对此不作赘述。
本领域技术人员应明白,本申请的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的 结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。