CN113256485A - 图像拉伸方法、装置、电子设备和存储介质 - Google Patents

图像拉伸方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN113256485A
CN113256485A CN202110558274.2A CN202110558274A CN113256485A CN 113256485 A CN113256485 A CN 113256485A CN 202110558274 A CN202110558274 A CN 202110558274A CN 113256485 A CN113256485 A CN 113256485A
Authority
CN
China
Prior art keywords
image
sub
stretched
target
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110558274.2A
Other languages
English (en)
Other versions
CN113256485B (zh
Inventor
刘导安
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bigo Technology Pte Ltd
Original Assignee
Bigo Technology Pte Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bigo Technology Pte Ltd filed Critical Bigo Technology Pte Ltd
Priority to CN202110558274.2A priority Critical patent/CN113256485B/zh
Publication of CN113256485A publication Critical patent/CN113256485A/zh
Application granted granted Critical
Publication of CN113256485B publication Critical patent/CN113256485B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/04Context-preserving transformations, e.g. by using an importance map

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

本发明实施例公开了一种图像拉伸方法、装置、电子设备和存储介质,图像拉伸方法包括:在待拉伸图像内确定分割点;以分割点为原点生成相互垂直的第一分割线和第二分割线,以将待拉伸图像分割为位于四个象限区域的子图像;确定目标图像区域,根据子图像所在的象限区域,以四个子图像分别填充目标图像区域的四个顶角区域,以及复制相邻两个子图像的公共边界和分割点以填充目标图像区域得到拉伸后的目标图像,本发明实施例的图像拉伸方法无需使用点九图,使得服务器上可以直接存储待拉伸图像,服务器存储图像资源流程简单化,该图像拉伸方法通过复制边界实现,不受机型限制,适用任意机型,拉伸后的目标图像保持待拉伸图像的边界细节,提高显示效果。

Description

图像拉伸方法、装置、电子设备和存储介质
技术领域
本发明实施例涉及图像处理技术领域,尤其涉及一种图像拉伸方法、装置、电子设备和存储介质。
背景技术
在Android开发中,支持自适应动态拉伸的点九图倍受欢迎,点九图使用场景广泛,如聊天气泡、新功能引导等场合的静态图像通常为点九图。
目前在Android终端侧使用点九图时,需要将点九图放在终端侧项目的资源目录下,通过代码直接调用即可,简单方便。然而在实际的应用开发中,为了使得产品可以更灵活调整和变更图像资源,图像资源需要放在服务器,但是把点九图直接从服务器下发,在终端使用时无法自适应动态拉伸,因为存在四周黑线显示问题。对此,设计出点九图后,需要通过aapt工具对图像进行编码后放到服务器,终端获取到图像后,通过获取图像的NinePatchChunk构建点九图,然后设置给对应视图进行拉伸显示。
上述方案虽然能够实现图像的自适应拉伸,但是图像上传到服务器过程需要增加aapt编码流程,增加了流程复杂度,另外容易由于终端机型适配导致点九图显示效果异常。
发明内容
本发明实施例提供一种图像拉伸方法、装置、电子设备和存储介质,以解决现有技术为了实现图像拉伸,需要图像经编码后上传到服务器导致流程复杂的问题,以及终端机型适配导致显示效果异常的问题。
第一方面,本发明实施例提供了一种图像拉伸方法,包括:
在待拉伸图像内确定分割点;
以所述分割点为原点生成相互垂直的第一分割线和第二分割线,以将所述待拉伸图像分割为位于四个象限区域的子图像;
确定目标图像区域,所述目标图像区域为待拉伸图像拉伸后的图像区域;
根据所述子图像所在的象限区域,以四个子图像分别填充所述目标图像区域的四个顶角区域,以及复制相邻两个子图像的公共边界和所述分割点以填充所述目标图像区域得到拉伸后的目标图像。
第二方面,本发明实施例提供了一种图像拉伸装置,包括:
分割点确定模块,用于在待拉伸图像内确定分割点;
图像分割模块,用于以所述分割点为原点生成相互垂直的第一分割线和第二分割线,以将所述待拉伸图像分割为位于四个象限区域的子图像;
目标图像区域确定模块,用于确定目标图像区域,所述目标图像区域为待拉伸图像拉伸后的图像区域;
图像拉伸模块,用于根据所述子图像所在的象限区域,以四个子图像分别填充所述目标图像区域的四个顶角区域,以及复制相邻两个子图像的公共边界和所述分割点以填充所述目标图像区域得到拉伸后的目标图像。
第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明第一方面所述的图像拉伸方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明第一方面所述的图像拉伸方法。
本发明实施例的图像拉伸方法,通过在待拉伸图像内确定分割点,以分割点为原点生成相互垂直的第一分割线和第二分割线,以将待拉伸图像分割为位于四个象限区域的子图像,确定待拉伸图像拉伸后的目标图像区域,根据子图像所在的象限区域以四个子图像分别填充目标图像区域的四个顶角区域,以及复制相邻两个子图像的公共边界和分割点以填充目标图像区域得到拉伸后的目标图像。本发明实施例将待拉伸图像分割为子图像后,由于通过子图像直接填充目标图像区域的四个顶角区域,以及通过复制边界方式填充目标图像区域得到拉伸后的图像,无需使用点九图,使得服务器上可以直接存储待拉伸图像,服务器存储图像资源流程简单化,并且该图像拉伸方法通过复制边界实现,不受机型限制,可以适用任意机型,拉伸后的目标图像可以保持待拉伸图像的边界细节,提高显示效果。
附图说明
图1是一个示例中图像拉伸的一个示意图;
图2是本发明实施例一提供的一种图像拉伸方法的步骤流程图;
图3A是本发明实施例二提供的一种图像拉伸方法的步骤流程图;
图3B是本发明实施例中对待处理图像进行分割的示意图;
图3C是本发明实施例中对待处理图像进行拉伸的原理示意图;
图3D是本发明实施例中图像拉伸的一个示例的示意图;
图4A是本发明实施例三提供的一种图像拉伸方法的步骤流程图;
图4B是本发明实施例中对待拉伸图像进行拉伸的原理示意图;
图5是本发明实施例四提供的一种图像拉伸装置的结构框图;
图6是本发明实施例五提供的一种电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合。
如图1所示为图像拉伸的示意图,在本发明实施例中,待拉伸的图像为静态图像,该静态图像的四个圆角处具有特定的装饰特征,四个圆角以外的边界和中间部分的像素单一。如图1中a1为直播场景中聊天公屏气泡的原始图像,该原始图像存储在服务器上,由服务器下发到客户端。如图1所示,原始图像中四个圆角具有爱心、星星等装饰特征,并且圆角具有固定的大小,当聊天内容字数增加时,原始图像需要进行纵向、横向拉伸以适应聊天内容字数的变化,并且保持圆角处的装饰特征不变,即圆角大小及装饰特征的大小均不变。如图1中a2和a3为拉伸后的图像,拉伸后的图像高度和宽度发生变化,但是四个圆角的大小和装饰特征保持不变。现有技术中通过点九图实现上述拉伸效果,但是存储到服务器的原始图像需要经过aapt编码,增加了流程复杂度,另外容易由于终端机型适配导致点九图显示效果异常,为解决上述问题,本发明实施例提供了一种图像拉伸方法,无需使用点九图,并且能够适用任意机型。
实施例一
图2为本发明实施例一提供的一种图像拉伸方法的步骤流程图,本发明实施例可适用于对图像拉伸的情况,该方法可以由本发明实施例的图像拉伸装置来执行,该图像拉伸装置可以由硬件或软件来实现,并集成在本发明实施例所提供的电子设备中,具体地,如图2所示,本发明实施例的图像拉伸方法可以包括如下步骤:
S201、在待拉伸图像内确定分割点。
在本发明实施例中,待拉伸图像为静态图像,该静态图像的四个圆角处具有特定的装饰特征,四个圆角以外的边界和中间部分的像素单一。在一个应用场景中,可以从服务器接收原始图像,当检测到对原始图像的拉伸操作时,将原始图像确定为待拉伸图像,示例性地,待拉伸图像可以是直播场景中聊天公屏中的气泡图像,该气泡图像作为显示聊天内容的背景图像,如图1所示,图1中图像a1为一个气泡图像,图像a1为待拉伸图像,可以经由服务器下发到客户端,客户端启动后用户输入聊天内容,在直播界面的聊天公屏中显示聊天内容时以气泡图像作为背景图像,当聊天内容字数增加时,气泡图像需要做横向、纵向拉伸以适应聊天内容字数,其中图像a2的聊天内容为一行时进行了横向拉伸,图像a3的聊天内容为两行时进行了横向和纵向拉伸。
如图1中图像a1所示,待拉伸图像为静态图像,四个圆角处具有特定的装饰特征,四个圆角以外的边界和中间部分的像素单一,可以从待拉伸图像内选择任意一点作为分割点,优选地,选择圆角区域以外的任意一点作为分割点,更优选地,选择待拉伸图像的中心点作为分割点。
S202、以所述分割点为原点生成相互垂直的第一分割线和第二分割线,以将所述待拉伸图像分割为位于四个象限区域的子图像。
具体地,第一分割线和第二分割线过分割点并且相互垂直,以及第一分割线和第二分割线均与待拉伸图像的边界相交,从而将待拉伸图像分割为四个子图像,每个子图像位于一个象限区域。示例性地,过待拉伸图像内的分割点作“十”字形分割线来将待拉伸图像划分为四个子图像,每个子图像位于一个象限区域且分别包含待拉伸图像的一个圆角区域。
S203、确定目标图像区域,所述目标图像区域为待拉伸图像拉伸后的图像区域。
在本发明实施例中,目标图像区域为待拉伸图像拉伸后的图像区域,该目标图像区域可以是一个空白的图像区域。在一个示例中,可以获取拉伸操作中的拉伸参数,如获取拉伸后的图像的高度和宽度,根据拉伸后的图像高度和宽度生成一个图像区域作为目标图像区域,在另一个示例中,可以获取拉伸增量,如获取拉伸高度增量和宽度增量,通过高度增量和待拉伸图像的高度求和作为目标图像区域的高度,通过宽度增量和待拉伸图像的宽度求和作为目标图像区域的宽度,在确定目标图像区域的高度和宽度后可以生成相应尺寸的图像区域作为目标图像区域。
S204、根据所述子图像所在的象限区域,以四个子图像分别填充所述目标图像区域的四个顶角区域,以及复制相邻两个子图像的公共边界和所述分割点以填充所述目标图像区域得到拉伸后的目标图像。
具体地,在确定目标图像区域后,由于每个子图像包含待拉伸图像的一个圆角区域,可以根据子图像所在的象限区域,将每个子图像填充到目标图像区域的一个顶角区域,以使得拉伸后的目标图像的圆角保持了待拉伸图像的圆角特征,然后对于目标图像区域中两个子图像之间的区域以两个子图像的公共边界平铺填充,对于两个子图像交叉部分的区域以分割点填充得到拉伸后的目标图像。
本发明实施例的图像拉伸方法,将待拉伸图像分割为子图像后,由于通过子图像直接填充目标图像区域的四个顶角区域,以及通过复制边界方式填充目标图像区域得到拉伸后的图像,无需使用点九图,使得服务器上可以直接存储待拉伸图像,服务器存储图像资源流程简单化,并且该图像拉伸方法通过复制边界实现,不受机型限制,可以适用任意机型,拉伸后的目标图像可以保持待拉伸图像的边界细节,提高显示效果。
实施例二
图3A为本发明实施例二提供的一种图像拉伸方法的步骤流程图,本发明实施例在前述实施例一的基础上进行优化,具体地,如图3A所示,本发明实施例的图像拉伸方法可以包括如下步骤:
S301、将待拉伸图像的中心点确定为分割点。
在本发明实施例中,待拉伸图像为静态图像,该静态图像的四个圆角处具有特定的装饰特征,四个圆角以外的边界和中间部分的像素单一。
如图3B所示,可以从待拉伸图像内选择任意一点作为分割点m0,示例性地,由于待拉伸图像拉伸后需要保持图像四个圆角的装饰特征,可以从待拉伸图像内选择圆角区域以外的任意一点作为分割点m0,优选地,选择待拉伸图像的中心点作为分割点m0。
S302、过所述分割点生成第一分割线,所述第一分割线垂直且相交于所述待拉伸图像的第一边界和第二边界,所述第一边界和所述第二边界为所述待拉伸图像中平行的两条边界。
在本发明实施例中,分割线用以将待拉伸图像分割为若干个子图像,具体地,分割线需要经过分割点,如图3B所示,过分割点m0生成第一分割线m1-m3,该第一分割线m1-m3与待拉伸图像水平方向上平行的第一边界和第二边界相交于交点m1和交点m3。
S303、过所述分割点生成与所述第一分割线垂直的第二分割线以将所述待拉伸图像分割为位于四个象限区域的子图像,所述第二分割线均与所述待拉伸图像的第三边界和第四边界相交,所述第三边界和所述第四边界为所述待拉伸图像中平行的两条边界。
具体地,如图3B所示,过分割点m0生成第二分割线m2-m4,该第二分割线m2-m4与待拉伸图像竖直方向上平行的第三边界和第四边界垂直,且相交于交点m2和交点m4,第二分割线m2-m4与第一分割线m1-m3垂直,通过垂直相交的第一分割线m1-m3与第二分割线m2-m4可以将待拉伸图像分割为位于四个象限区域的子图像A、子图像B、子图像C以及子图像D,每个子图像均包含了待拉伸图像的一个圆角区域。
S304、获取拉伸参数,所述拉伸参数为图像的目标高度和目标宽度。
在一个示例中,拉伸参数可以是拉伸后的图像的目标高度和目标宽度,在另一个示例中,拉伸参数可以是拉伸增量,即高度增量和宽度增量,可以通过高度增量和待拉伸图像的高度求和得到目标高度,以及通过宽度增量和待拉伸图像的宽度求和得到目标宽度。
S305、生成高度为所述目标高度,宽度为所述目标宽度的图像区域作为目标图像区域。
具体地,生成一个空白的图像区域作为目标图像区域,该目标图像区域的高度为目标高度,宽度为目标宽度。
S306、根据所述子图像所在象限区域,以四个子图像分别填充所述目标图像区域的四个顶角区域,得到第一待填充区域。
由于子图像包含了待处理图像的圆角区域的特征,可以将子图像填充到目标图像区域的四个顶角区域,以使得拉伸后的目标图像保持待拉伸图像的圆角特征,如图3B所示,在待拉伸图像中,子图像A、子图像B、子图像C、子图像D分别位于左上象限区域、右上象限区域、左下象限区域、右下象限区域,如图3C所示,可以将子图像A填充到目标图像区域的左上顶角区域,子图像B填充到目标图像区域的右上顶角区域,子图像C填充到目标图像区域的左下顶角区域,子图像D填充到目标图像区域的右下顶角区域,从而得到区域A2、区域A3、区域A4、区域B2、区域C2拼接而成的第一待填充区域。
S307、对于所述第一待填充区域中位于两个相邻子图像之间的第二待填充区域,复制所述两个相邻子图像的公共边界填充所述第二待填充区域,得到第三待填充区域。
如图3B所示,第一分割线m1-m3和第二分割线m2-m4实际上可以是像素点组成的线段,即分割线的宽度为一个像素点的宽度。如图3C所示,对于区域A2、区域A3、区域A4、区域B2、区域C2拼接而成的第一待填充区域中,区域A2(第二待填充区域)为相邻子图像A1和子图像B1之间的区域,则区域A2可以使用子图像A1和子图像B1的公共边界m0-m1填充,具体地,假设区域A2的宽度为w,可以在区域A2中复制w次公共边界m0-m1,同理,对于区域A3,假设区域A3的高度为h,可以在区域A2中复制h次公共边界m0-m4,具体如下表所示:
区域 拉伸逻辑
A2 复制w次公共边界m0-m1
A3 复制h次公共边界m0-m4
B2 复制h次公共边界m0-m2
C2 复制w次公共边界m0-m3
需要说明的是,复制多次公共边界是指将公共边界平铺复制到指定区域的空白区域中,例如,对于区域A2,每复制一次公共边界m0-m1是指将公共边界m0-m1填充到区域2的一列空白像素上,直到区域A2中每列像素均被公共边界m0-m1填充完为止。
通过复制公共边界填充区域A2、区域A3、区域C2以及区域B2后,余下的区域A4为第三待填充区域。
S308、以所述分割点填充所述第三待填充区域得到拉伸后的目标图像。
如图3B所示,分割点m0占一个像素点位置,待拉伸图像中除了四个圆角区域和边界以外的所有像素点均和分割点m0所占的像素点相同,对于拉伸后的图像的目标图像区域,区域A4可以用分割点m0来填充,使得区域A4内的所有像素点相同,最后得到拉伸后的图像区域。
如图3D为拉伸的一个示例,在图3D中待拉伸图像被分割为位于四个象限区域的子图像A、子图像B、子图像C以及子图像D,确定目标图像区域后,目标图像区域的左上角区域A1用子图像A填充,右上角区域B1用子图像B填充,左下角区域C1用子图像C填充,右下角区域D1用子图像D填充,区域A2复制分割线m0-m1所覆盖的像素点来填充,区域A3复制分割线m0-m4所覆盖的像素点来填充,区域C2复制分割线m0-m3所覆盖的像素点来填充,区域B2复制分割线m0-m2所覆盖的像素点来填充,区域A4复制分割点m0所覆盖的像素点来填充,最终整个目标图像区域全部被填充后得到拉伸后的目标图像,该目标图像的四个顶角区域直接采用待拉伸图像的圆角区域来填充,其他区域采用公共边界和分割点来填充,既能够保持圆角区域的特征,图像复制填充操作又能适用任意终端机型。
本发明实施例的图像拉伸方法,通过在待拉伸图像内确定分割点,以分割点为原点生成相互垂直的第一分割线和第二分割线,以将待拉伸图像分割为位于四个象限区域的子图像,确定待拉伸图像拉伸后的目标图像区域,根据子图像所在象限区域以四个子图像分别填充目标图像区域的四个顶角区域,得到第一待填充区域,对于第一待填充区域中位于两个相邻子图像之间的第二待填充区域,复制两个相邻子图像的公共边界填充第二待填充区域,得到第三待填充区域,最后以分割点填充第三待填充区域得到拉伸后的目标图像。本发明实施例将待拉伸图像分割为子图像后,由于通过子图像直接填充目标图像区域的四个顶角区域,以及通过复制边界方式填充目标图像区域得到拉伸后的图像,无需使用点九图,使得服务器上可以直接存储待拉伸图像,服务器存储图像资源流程简单化,并且该图像拉伸方法通过复制边界实现,不受机型限制,可以适用任意机型,拉伸后的目标图像可以保持待拉伸图像的边界细节,提高显示效果。
实施例三
图4A为本发明实施例三提供的一种图像拉伸方法的步骤流程图,本发明实施例在前述实施例一的基础上进行优化,具体地,如图4A所示,本发明实施例的图像拉伸方法可以包括如下步骤:
S401、将待拉伸图像的中心点确定为分割点。
S402、过所述分割点生成第一分割线,所述第一分割线垂直且相交于所述待拉伸图像的第一边界和第二边界,所述第一边界和所述第二边界为所述待拉伸图像中平行的两条边界;
S403、过所述分割点生成与所述第一分割线垂直的第二分割线以将所述待拉伸图像分割为位于四个象限区域的子图像,所述第二分割线均与所述待拉伸图像的第三边界和第四边界相交,所述第三边界和所述第四边界为所述待拉伸图像中平行的两条边界。
S404、获取拉伸参数,所述拉伸参数为图像的目标高度和目标宽度;
S405、生成高度为所述目标高度,宽度为所述目标宽度的图像区域作为目标图像区域。
上述S401-S405可参考实施二中的S301-S305,在此不再详述。
S406、构建绘制所述子图像的着色器,所述着色器中的平铺模式设置为边界复制平铺模式Shader.TileMode.CLAMP。
在本发明的一个可选实施例中,可以先采用图像截取接口Bitmap.createBitmap()从待拉伸图像中截取子图像,然后通过着色器构建接口BitmapShader()构建子图像的着色器,其中,着色器中原图像设置为子图像,横向和纵向的平铺模式设置为复制边界平铺模式。
具体地,在Android系统中,可以通过Bitmap.createBitmap(src,x,y,w,h)接口从待拉伸图像中截取子图像,src为待拉伸图像,x和y为裁剪子图像的起始点坐标,w和h表示从起始点坐标裁剪出宽度为w、高度为h的子图像。
如图3B所示的待拉伸图像中,坐标原点O1为图像的左上角,纵坐标向下为正,横坐标向右为正,待拉伸图像的宽度为W,高度为H,分割点m0为待拉伸图像的中心点,可以通过Bitmap.createBitmap()获取子图像如下:
获取子图像A:bitmapA=Bitmap.createBitmap(srcBitmap,0,0,W/2,H/2);
获取子图像B:bitmapB=Bitmap.createBitmap(srcBitmap,W/2,0,W/2,H/2);
获取子图像C:bitmapC=Bitmap.createBitmap(srcBitmap,0,H/2,W/2,H/2);
获取子图像D:bitmapD=Bitmap.createBitmap(srcBitmap,W/2,H/2,W/2,H/2)。
在截取子图像后,通过着色器构建接口BitmapShader()构建绘制子图像的着色器,具体地,着色器中参数设置如下:
BitmapShader(bitmap,Shader.TileMode.CLAMP,Shader.TileMode.CLAMP)
上述参数中bitmap表示原图像(子图像),两个Shader.TileMode.CLAMP,Shader.TileMode.CLAMP表示设置横向和纵向均为复制边界平铺模式,即以上述着色器对绘制区域进行绘制时,绘制完原图像后,未绘制的区域复制原图像的边界进行平铺填充,具体到本发明实施例中,构建绘制各个子图像的着色器如下:
子图像A的着色器:
bitmapShaderA=BitmapShader(bitmapA,Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
子图像B的着色器:
bitmapShaderB=BitmapShader(bitmapB,Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
子图像C的着色器:
bitmapShaderC=BitmapShader(bitmapC,Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
子图像D的着色器:
bitmapShaderD=BitmapShader(bitmapD,Shader.TileMode.CLAMP,Shader.TileMode.CLAMP)。
S407、将所述目标图像区域划分为四个象限区域,其中一个象限区域的高度和宽度分别等于其中一个子图像的高度和宽度。
在本发明实施例中,可以先从四个子图像中选取任意一个子图像作为目标子图像,基于待拉伸图像中目标子图像所在的目标象限区域,在目标图像区域中确定出与目标象限区域对应的顶角,生成包含顶角的、位于目标图像区域的目标顶角区域,目标顶角区域的边界与目标子图像的边界重合,以目标顶角区域在目标图像区域中的两条边界为分割线将目标图像区域划分为四个象限区域。
具体地,如图3B所示,选择子图像D作为目标子图像,子图像D位于待拉伸图像的右下象限区域,则可以在如图4B所示的目标图像区域中确定右下顶角作为与子图像D所在的右下象限区域对应的顶角,基于目标图像区域的右下顶角生成一个目标顶角区域D5,该目标顶角区域D5的宽度等于子图像D的宽度,高度等于子图像D的高度,亦即目标图像区域中的目标顶角区域D5的形状大小与子图像D相同,最终可以基于目标顶角区域D5在目标图像区域内的两条边界将目标图像区域划分为区域A5、区域B5、区域C5和区域D5共4个象限区域。
上述虽然以子图像D作为目标区域来将目标图像区域划分为四个象限区域,在实际应用中也可以以子图像A或者子图像B或者子图像C来将目标图像区域划分为四个象限区域。
S408、根据所述子图像所在象限区域与所述目标图像区域的象限区域的对应关系,将所述目标图像区域中的象限区域确定为所述子图像的绘制区域。
具体地,待处理图像的象限区域与目标图像区域的象限区域一一对应,如图3B和图4B所示,子图像A的绘制区域为图4B中的区域A5,子图像B的绘制区域为图4B中的区域B5,子图像C的绘制区域为图4B中的区域C5,子图像D的绘制区域为图4B中的区域D5。
在实际应用中,可以以目标图像区域的左上角O2为坐标原点,通过Rect()接口创建各个子图像的绘制区域,Rect()中的第一个参数为绘制区域的宽度,第二个参数为绘制区域的高度,各个子图像的绘制区域如下:
子图像A的绘制区域A5:RectA=Rect(W/2+w,H/2+h);
子图像B的绘制区域B5:RectB=Rect(W/2,H/2+h);
子图像C的绘制区域C5:RectC=Rect(W/2+w,H/2);
子图像D的绘制区域D5:RectD=Rect(W/2,H/2);
其中,W为待拉伸图像的宽度,H为待拉伸图像的高度,w为宽度方向上的拉伸增量,h为高度方向上的拉伸增量。
S409、调用画布接口Canvas.drawRect()对所述绘制区域进行绘制得到拉伸后的目标图像,其中,所述画布接口Canvas.drawRect()中画笔的着色器为绘制所述子图像的着色器。
画布接口Canvas.drawRect()包括四个参数,Canvas.drawRect()中第一个参数和第二个参数为绘制开始的横坐标x和纵坐标y,第三个参数为绘制区域Rect,第四个参数为画笔paint,在绘制每个子图像对应的绘制区域之前,将相应的着色器设置给画笔paint,如图4B所示,各个绘制区域的画布接口设置如下:
绘制区域A5的画布接口:Canvas.drawRect(0,0,RectA,paint)
绘制区域B5的画布接口:Canvas.drawRect(W/2+w,0,RectB,paint)
绘制区域C5的画布接口:Canvas.drawRect(0,H/2+h,RectC,paint)
绘制区域D5的画布接口:Canvas.drawRect(W/2+w,H/2+h,RectD,paint)
以绘制A5区域作为示例,如图3C和如图4B所示,绘制区域A5=A1+A2+A3+A4,其实际上是将子图像A填充到区域A1后,复制子图像A1的两条边界和两条边界的公共交点来填充区域A2、区域A3和区域A4,如绘制区域A5的画布接口Canvas.drawRect(0,0,RectA,paint)所设置,在图4B中,绘制区域A5时,绘制起始坐标为(0,0),即从左上角O2开始绘制,绘制区域RectA的宽度为W/2+w,高度为H/2+h,画笔paint的着色器为bitmapShaderA,画布接口Canvas.drawRect(0,0,RectA,paint)执行绘制时,先在图4B的绘制区域A5中采用子图像A填充左上角区域,复制子图像A的边界L1(实为图3B中的公共边界m0-m1)和边界L2(实为图3B中的公共边界m0-m4),以及交点P来填充绘制区域A5的,同理,每个绘制区域设置画布接口后,可以在目标图像区域中绘制各个区域,最终得到拉伸后的目标图像。
本发明实施例的图像拉伸方法,通过在待拉伸图像内确定分割点,以分割点为原点生成相互垂直的第一分割线和第二分割线,以将待拉伸图像分割为位于四个象限区域的子图像,确定待拉伸图像拉伸后的目标图像区域,构建绘制子图像的着色器,着色器中的平铺模式设置为边界复制平铺模式Shader.TileMode.CLAMP,并将目标图像区域划分为四个象限区域,其中一个象限区域的高度和宽度分别等于其中一个子图像的高度和宽度,根据子图像所在象限区域与目标图像区域的象限区域的对应关系,将目标图像区域中的象限区域确定为子图像的绘制区域,调用画布接口Canvas.drawRect()对绘制区域进行绘制得到拉伸后的目标图像,其中,画布接口Canvas.drawRect()中画笔的着色器为绘制子图像的着色器。本发明实施例将待拉伸图像分割为子图像后,设置绘制子图像的着色器的模式为复制边界平铺模式,在确定各个子图像的绘制区域后,将着色器设置给画布接口的画笔,调用画布接口来在目标图像区域中绘制各个绘制区域得到拉伸后的目标图像,无需使用点九图,使得服务器上可以直接存储待拉伸图像,服务器存储图像资源流程简单化,该图像拉伸方法中着色器的模式设置为复制边界平铺模式,不受机型限制,可以适用任意安卓系统的机型,拉伸后的目标图像可以保持待拉伸图像的边界细节,提高显示效果。
实施例四
图5是本发明实施例四提供的一种图像拉伸装置的结构框图,如图5所示,本发明实施例的图像拉伸装置包括:
分割点确定模块501,用于在待拉伸图像内确定分割点;
图像分割模块502,用于以所述分割点为原点生成相互垂直的第一分割线和第二分割线,以将所述待拉伸图像分割为位于四个象限区域的子图像;
目标图像区域确定模块503,用于确定目标图像区域,所述目标图像区域为待拉伸图像拉伸后的图像区域;
图像拉伸模块504,用于根据所述子图像所在的象限区域,以四个子图像分别填充所述目标图像区域的四个顶角区域,以及复制相邻两个子图像的公共边界和所述分割点以填充所述目标图像区域得到拉伸后的目标图像。
本发明实施例所提供的图像拉伸装置可执行本发明实施例一、实施例二、实施例三所提供的图像拉伸方法,具备执行方法相应的功能模块和有益效果。
实施例五
参照图6,示出了本发明一个示例中的一种电子设备的结构示意图。如图6所示,该电子设备具体可以包括:处理器601、存储装置602、具有触摸功能的显示屏603、输入装置604、输出装置605以及通信装置606。该电子设备中处理器601的数量可以是一个或者多个,图6中以一个处理器601为例。该电子设备的处理器601、存储装置602、显示屏603、输入装置604、输出装置605以及通信装置606可以通过总线或者其他方式连接,图6中以通过总线连接为例,所述电子设备用于执行如本发明任一实施例提供的图像拉伸方法。
本发明实施例还提供一种计算机可读存储介质,所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述方法实施例所述的图像拉伸方法。
需要说明的是,对于装置、电子设备、存储介质实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不特定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变换、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (12)

1.一种图像拉伸方法,其特征在于,包括:
在待拉伸图像内确定分割点;
以所述分割点为原点生成相互垂直的第一分割线和第二分割线,以将所述待拉伸图像分割为位于四个象限区域的子图像;
确定目标图像区域,所述目标图像区域为待拉伸图像拉伸后的图像区域;
根据所述子图像所在的象限区域,以四个子图像分别填充所述目标图像区域的四个顶角区域,以及复制相邻两个子图像的公共边界和所述分割点以填充所述目标图像区域得到拉伸后的目标图像。
2.根据权利要求1所述的图像拉伸方法,其特征在于,所述在待拉伸图像内确定分割点,包括:
将待拉伸图像的中心点确定为分割点。
3.根据权利要求1所述的图像拉伸方法,其特征在于,所述以所述分割点为原点生成相互垂直的第一分割线和第二分割线,以将所述待拉伸图像分割为位于四个象限区域的子图像,包括:
过所述分割点生成第一分割线,所述第一分割线垂直且相交于所述待拉伸图像的第一边界和第二边界,所述第一边界和所述第二边界为所述待拉伸图像中平行的两条边界;
过所述分割点生成与所述第一分割线垂直的第二分割线以将所述待拉伸图像分割为位于四个象限区域的子图像,所述第二分割线均与所述待拉伸图像的第三边界和第四边界相交,所述第三边界和所述第四边界为所述待拉伸图像中平行的两条边界。
4.根据权利要求1所述的图像拉伸方法,其特征在于,所述确定目标图像区域,包括:
获取拉伸参数,所述拉伸参数为图像的目标高度和目标宽度;
生成高度为所述目标高度,宽度为所述目标宽度的图像区域作为目标图像区域。
5.根据权利要求1-4任一项所述的图像拉伸方法,其特征在于,所述根据所述子图像所在象限区域,以四个子图像分别填充所述目标图像区域的四个顶角区域,以及复制相邻两个子图像的公共边界和所述分割点以填充所述目标图像区域得到拉伸后的目标图像,包括:
根据所述子图像所在象限区域,以四个子图像分别填充所述目标图像区域的四个顶角区域,得到第一待填充区域;
对于所述第一待填充区域中位于两个相邻子图像之间的第二待填充区域,复制所述两个相邻子图像的公共边界填充所述第二待填充区域,得到第三待填充区域;
以所述分割点填充所述第三待填充区域得到拉伸后的目标图像。
6.根据权利要求1-4任一项所述的图像拉伸方法,其特征在于,所述根据所述子图像所在象限区域,以四个子图像分别填充所述目标图像区域的四个顶角区域,以及复制相邻两个子图像的公共边界和所述分割点以填充所述目标图像区域得到拉伸后的目标图像,包括:
构建绘制所述子图像的着色器,所述着色器中的平铺模式设置为边界复制平铺模式Shader.TileMode.CLAMP;
将所述目标图像区域划分为四个象限区域,其中一个象限区域的高度和宽度分别等于其中一个子图像的高度和宽度;
根据所述子图像所在象限区域与所述目标图像区域的象限区域的对应关系,将所述目标图像区域中的象限区域确定为所述子图像的绘制区域;
调用画布接口Canvas.drawRect()对所述绘制区域进行绘制得到拉伸后的目标图像,其中,所述画布接口Canvas.drawRect()中画笔的着色器为绘制所述子图像的着色器。
7.根据权利要求6所述的图像拉伸方法,其特征在于,所述构建绘制所述子图像的着色器,包括:
采用图像截取接口Bitmap.createBitmap()从所述待拉伸图像中截取所述子图像;
通过着色器构建接口BitmapShader()构建所述子图像的着色器,其中,所述着色器中原图像设置为所述子图像,横向和纵向的平铺模式设置为复制边界平铺模式。
8.根据权利要求6所述的图像拉伸方法,其特征在于,所述将所述目标图像区域划分为四个象限区域,包括:
从四个子图像中选取任意一个子图像作为目标子图像;
基于所述待拉伸图像中所述目标子图像所在的目标象限区域,在所述目标图像区域中确定出与所述目标象限区域对应的顶角;
确定包含所述顶角的、位于所述目标图像区域的目标顶角区域,所述目标顶角区域的边界与所述目标子图像的边界重合;
以所述目标顶角区域在所述目标图像区域中的两条边界为分割线将所述目标图像区域划分为四个象限区域。
9.根据权利要求1所述的图像拉伸方法,其特征在于,在待拉伸图像内确定分割点之前,还包括:
从服务器接收原始图像;
当检测到对所述原始图像的拉伸操作时,将所述原始图像确定为待拉伸图像。
10.一种图像拉伸装置,其特征在于,包括:
分割点确定模块,用于在待拉伸图像内确定分割点;
图像分割模块,用于以所述分割点为原点生成相互垂直的第一分割线和第二分割线,以将所述待拉伸图像分割为位于四个象限区域的子图像;
目标图像区域确定模块,用于确定目标图像区域,所述目标图像区域为待拉伸图像拉伸后的图像区域;
图像拉伸模块,用于根据所述子图像所在的象限区域,以四个子图像分别填充所述目标图像区域的四个顶角区域,以及复制相邻两个子图像的公共边界和所述分割点以填充所述目标图像区域得到拉伸后的目标图像。
11.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9任一项所述的图像拉伸方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-9任一项所述的图像拉伸方法。
CN202110558274.2A 2021-05-21 2021-05-21 图像拉伸方法、装置、电子设备和存储介质 Active CN113256485B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110558274.2A CN113256485B (zh) 2021-05-21 2021-05-21 图像拉伸方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110558274.2A CN113256485B (zh) 2021-05-21 2021-05-21 图像拉伸方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN113256485A true CN113256485A (zh) 2021-08-13
CN113256485B CN113256485B (zh) 2024-01-30

Family

ID=77183606

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110558274.2A Active CN113256485B (zh) 2021-05-21 2021-05-21 图像拉伸方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN113256485B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116433664A (zh) * 2023-06-13 2023-07-14 成都数之联科技股份有限公司 面板缺陷检测方法、装置、存储介质、设备及程序产品

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6597363B1 (en) * 1998-08-20 2003-07-22 Apple Computer, Inc. Graphics processor with deferred shading
CN101606177A (zh) * 2007-01-04 2009-12-16 鸣川肇 信息处理方法
CN101822046A (zh) * 2007-10-15 2010-09-01 西门子公司 用于由至少两个编码输入视频流来建立一个编码输出视频流的方法和装置、以及该装置的应用和编码输入视频流
CN103116490A (zh) * 2012-12-04 2013-05-22 广州市久邦数码科技有限公司 一种基于网页的九切图绘制方法
CN104732481A (zh) * 2015-03-18 2015-06-24 百度在线网络技术(北京)有限公司 图像调整方法及装置
US20160027152A1 (en) * 2014-07-24 2016-01-28 Adobe Systems Incorporated Scalable Massive Parallelization of Overlapping Patch Aggregation
CN105447815A (zh) * 2014-06-16 2016-03-30 阿里巴巴集团控股有限公司 移动终端设备中图片的处理方法及装置
CN105976422A (zh) * 2016-04-27 2016-09-28 乐视控股(北京)有限公司 一种利用点九图像优化3d空间纹理的方法及装置
WO2018113725A1 (zh) * 2016-12-21 2018-06-28 北京奇虎科技有限公司 加载图片资源的方法、装置、程序及介质
CN108965979A (zh) * 2018-07-09 2018-12-07 武汉斗鱼网络科技有限公司 一种安卓电视上的3d阴影生成方法
CN109118566A (zh) * 2018-09-13 2019-01-01 网易(杭州)网络有限公司 贴图的压缩方法、装置、存储介质和电子装置
CN109325901A (zh) * 2017-07-31 2019-02-12 深圳市中兴微电子技术有限公司 一种实现图像处理的方法及装置
CN110264473A (zh) * 2019-06-13 2019-09-20 Oppo广东移动通信有限公司 基于多帧图像的图像处理方法、装置及电子设备
CN110554871A (zh) * 2018-06-04 2019-12-10 上海视九信息科技有限公司 NinePatch图形描绘方法及装置、计算机可读存储介质
CN111145286A (zh) * 2019-12-25 2020-05-12 重庆文理学院 一种基于gpu的用于边缘计算场景的点九图片贴图绘制方法
US20200167068A1 (en) * 2017-06-07 2020-05-28 Huawei Technologies Co., Ltd. Data Processing Method and Electronic Device
CN111738917A (zh) * 2019-06-06 2020-10-02 北京京东尚科信息技术有限公司 一种图片伸缩方法、装置、设备和存储介质
CN112053416A (zh) * 2020-09-14 2020-12-08 网易(杭州)网络有限公司 图像处理方法、装置、存储介质及计算机设备

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6597363B1 (en) * 1998-08-20 2003-07-22 Apple Computer, Inc. Graphics processor with deferred shading
CN101606177A (zh) * 2007-01-04 2009-12-16 鸣川肇 信息处理方法
CN101822046A (zh) * 2007-10-15 2010-09-01 西门子公司 用于由至少两个编码输入视频流来建立一个编码输出视频流的方法和装置、以及该装置的应用和编码输入视频流
CN103116490A (zh) * 2012-12-04 2013-05-22 广州市久邦数码科技有限公司 一种基于网页的九切图绘制方法
CN105447815A (zh) * 2014-06-16 2016-03-30 阿里巴巴集团控股有限公司 移动终端设备中图片的处理方法及装置
US20160027152A1 (en) * 2014-07-24 2016-01-28 Adobe Systems Incorporated Scalable Massive Parallelization of Overlapping Patch Aggregation
CN104732481A (zh) * 2015-03-18 2015-06-24 百度在线网络技术(北京)有限公司 图像调整方法及装置
CN105976422A (zh) * 2016-04-27 2016-09-28 乐视控股(北京)有限公司 一种利用点九图像优化3d空间纹理的方法及装置
WO2018113725A1 (zh) * 2016-12-21 2018-06-28 北京奇虎科技有限公司 加载图片资源的方法、装置、程序及介质
US20200167068A1 (en) * 2017-06-07 2020-05-28 Huawei Technologies Co., Ltd. Data Processing Method and Electronic Device
CN109325901A (zh) * 2017-07-31 2019-02-12 深圳市中兴微电子技术有限公司 一种实现图像处理的方法及装置
CN110554871A (zh) * 2018-06-04 2019-12-10 上海视九信息科技有限公司 NinePatch图形描绘方法及装置、计算机可读存储介质
CN108965979A (zh) * 2018-07-09 2018-12-07 武汉斗鱼网络科技有限公司 一种安卓电视上的3d阴影生成方法
CN109118566A (zh) * 2018-09-13 2019-01-01 网易(杭州)网络有限公司 贴图的压缩方法、装置、存储介质和电子装置
CN111738917A (zh) * 2019-06-06 2020-10-02 北京京东尚科信息技术有限公司 一种图片伸缩方法、装置、设备和存储介质
CN110264473A (zh) * 2019-06-13 2019-09-20 Oppo广东移动通信有限公司 基于多帧图像的图像处理方法、装置及电子设备
CN111145286A (zh) * 2019-12-25 2020-05-12 重庆文理学院 一种基于gpu的用于边缘计算场景的点九图片贴图绘制方法
CN112053416A (zh) * 2020-09-14 2020-12-08 网易(杭州)网络有限公司 图像处理方法、装置、存储介质及计算机设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LSGXEVA: ""NinePatch图(9-Patch图,.9图)"", 《《HTTPS://WWW.CNBLOGS.COM/LSGXEVA/P/13395903.HTML》》 *
科技小代: ""不慌,[点九图]就这样给"", 《HTTPS://ZHUANLAN.ZHIHU.COM/P/185819461》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116433664A (zh) * 2023-06-13 2023-07-14 成都数之联科技股份有限公司 面板缺陷检测方法、装置、存储介质、设备及程序产品
CN116433664B (zh) * 2023-06-13 2023-09-01 成都数之联科技股份有限公司 面板缺陷检测方法、装置、存储介质、设备及程序产品

Also Published As

Publication number Publication date
CN113256485B (zh) 2024-01-30

Similar Documents

Publication Publication Date Title
JP2020533710A (ja) 画像ステッチング方法および装置、記憶媒体
US8947448B2 (en) Image processing device, image data generation device, image processing method, image data generation method, and data structure of image file
WO2006080115A1 (ja) 描画方法、画像生成装置、および電子情報機器
CN105701855B (zh) 基于符号结构的线型地图符号反走样绘制方法
JPH0660172A (ja) 画像の可変拡大方法及びその装置
US11961174B2 (en) Programmatically configuring materials
CN110917617A (zh) 水波纹图像的生成方法、装置、设备及存储介质
CN113256485B (zh) 图像拉伸方法、装置、电子设备和存储介质
CN115103134B (zh) 一种led虚拟拍摄切割合成方法
CN111145286A (zh) 一种基于gpu的用于边缘计算场景的点九图片贴图绘制方法
CN110866967A (zh) 水波纹渲染方法、装置、设备及存储介质
JP2006235839A (ja) 画像処理装置および画像処理方法
CN110038302B (zh) 基于Unity3D的网格生成方法及装置
JP7289390B2 (ja) ディスプレイウォールシステムに用いるイメージ処理デバイス、および、ディスプレイ制御方法
CN114529674B (zh) 基于二维版片模型的三维模型纹理映射方法、装置及介质
US11620965B2 (en) Video display method, video display system, electronic device, and storage medium
CN111681317B (zh) 数据处理方法、装置、电子设备及存储介质
US7116339B2 (en) Image rendering method using recursive interpolation
GB2394873A (en) Generating texture maps for use in 3D computer graphics
JPS6186876A (ja) 三次元物体表示処理方式
CN117292644A (zh) 一种异形屏画面的显示方法及相关装置
JP3014395B2 (ja) 立体画像表示システム
CN114359468A (zh) 山体模型的纹理生成方法和装置
CN114578993A (zh) 一种云设备分辨率自适应方法、装置及介质
CN117252974A (zh) 三维图像的贴图方法和装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant