CN113450251A - 拼图的生成方法、设备及存储介质 - Google Patents
拼图的生成方法、设备及存储介质 Download PDFInfo
- Publication number
- CN113450251A CN113450251A CN202010225897.3A CN202010225897A CN113450251A CN 113450251 A CN113450251 A CN 113450251A CN 202010225897 A CN202010225897 A CN 202010225897A CN 113450251 A CN113450251 A CN 113450251A
- Authority
- CN
- China
- Prior art keywords
- unit
- jigsaw
- value
- subgraph
- border
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4038—Image mosaicing, e.g. composing plane images from plane sub-images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/50—Image enhancement or restoration using two or more images, e.g. averaging or subtraction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/32—Indexing scheme for image data processing or generation, in general involving image mosaicing
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
本公开提供一种拼图的生成方法、设备及存储介质,其中,拼图的生成方法包括:获取用于构成拼图的至少两个初始图像;根据所述至少两个初始图像获取拼图模板的尺寸信息;根据拼图模板的尺寸信息获取布局数据以及画布数据;根据所述至少两个初始图像、所述尺寸信息、所述画布数据以及所布局数据,生成单元子图,并将单元子图适配至拼图模板的每个单元中,得到第一拼图;在检测到基于第一拼图的边框的第一编辑操作时,根据单元子图的最小边长以及拼图模板的边框的宽度值确定第一拼图的边框的宽度值,根据第一拼图的边框的宽度值确定单元子图的第一布局信息;根据第一拼图的边框的宽度值以及第一布局信息调整第一拼图,得到第二拼图。
Description
技术领域
本说明书一个或多个实施例涉及图像处理技术领域,尤其涉及一种拼图的生成方法、设备及存储介质。
背景技术
随着智能移动终端的发展,人们常用智能移动终端进行拍照以及图像处理,目前,单一图像的处理已经不能满足用户日新月异的新需求。同时处理多张图片,拼成一张图片的各种各样的拼图软件也应运而生。在点击不同拼图模版,进行拼图这种简单的静态化处理也不能满足用户的需求。
发明内容
有鉴于此,本说明书一个或多个实施例的目的在于提出一种拼图的生成方法、设备及存储介质。
本说明书的一个或多个实施例提供了一种拼图的生成方法,包括:获取用于构成拼图的至少两个初始图像;根据所述至少两个初始图像获取拼图模板的尺寸信息;根据所述拼图模板的尺寸信息获取布局数据以及画布数据;根据所述至少两个初始图像、所述尺寸信息、所述画布数据以及所布局数据,生成单元子图,并将所述单元子图适配至所述拼图模板的每个单元中,得到第一拼图;在检测到基于所述第一拼图的边框的第一编辑操作时,根据所述单元子图的最小边长以及所述拼图模板的边框的宽度值确定所述第一拼图的边框的宽度值,根据所述第一拼图的边框的宽度值确定所述单元子图的第一布局信息;根据所述第一拼图的边框的宽度值以及所述第一布局信息调整所述第一拼图,得到第二拼图。
可选的,所述方法还包括:在得到所述第一拼图之后,获取所述单元子图的第二布局信息;根据所述单元子图的最小边长以及所述拼图模板的边框的宽度值确定所述第一拼图的边框的宽度值,根据所述第一拼图的边框值确定所述单元子图的第一布局信息,包括:根据所述单元子图的最小边长以及所述拼图模板的画布边框宽度值确定所述第一拼图的最大边框宽度值;根据所述最大边框宽度值确定所述第一拼图的边框的宽度值;将所述第一拼图的画布布局尺寸减去所述第一拼图的边框的宽度值,得到转换画布尺寸;根据转换画布尺寸以及所述第二布局信息确定所述单元子图的尺寸信息;根据所述第一拼图的边框的宽度值以及所述单元子图的尺寸信息,确定所述第一布局信息。
可选的,所述单元子图的第一布局信息,包括:所述单元子图在X轴的最小坐标值为MinX+border/2,所述单元子图的在Y轴的最小坐标值为MinY+border/2,所述单元子图的宽度为Width-border,所述单元子图的高度为Height-border,其中,MinX为所述单元子图在X轴上的最小坐标值,MinY为所述单元子图在Y轴上的最小坐标值,Width为所述单元子图的宽度,Height所述单元子图的高度,border为所述第一拼图的边框的宽度值。
可选的,根据所述单元子图的最小边长以及所述拼图模板的画布边框宽度值确定所述第一拼图的最大边框宽度值,包括,当所述最小边长为单元子图的高时,根据如下公式(1)计算所述最大边框宽度值;
maxBoder=(pHeight*canvasFrame.height–MinHeight)/(1+pHeight)(1);当所述最小边长为单元子图的宽时,根据如下公式(2)计算所述最大边框宽度值;
maxBorder=(pWidth*canvasFrame.width-MinWidth)/(1+pWidth) (2)
其中,maxBoder为所述最大边框宽度值,pHeight为所述第一拼图中尺寸最小的单元子图的高度占画布高度的比例,canvasFrame.height为画布高度,pWidth为所述第一拼图中尺寸最小的单元子图的宽度,MinHeight为额定最小高度值,MinWidth为额定最小宽度值。
可选的,所述方法还包括:在检测到基于所述单元子图的圆角的第二编辑操作时,确定与所述第二编辑操作对应的目标圆角值;根据所述单元子图的最小边长确定所述单元子图的最大圆角值;当所述目标圆角值不大于所述最大圆角值时,为所述单元子图执行所述第二编辑操作,若所述最大圆角值大于所述最大圆角值时,不响应所述第二编辑操作。
可选的,根据所述单元子图的最小边长确定所述单元子图的最大圆角值,包括根据如下公式计算所述最大圆角值:maxCorner=MinSide/2,其中,maxCorner为所述最大圆角值,MinSide为所述最小边长。
可选的,所述方法还包括:在为所述单元子图执行所述第二编辑操作之后,根据所述目标圆角值重新确定所述单元子图的额定最小边长;根据所述额定最小边长重新计算所述第二拼图的最大边框宽度值;当计算得到的所述第二拼图的最大边框宽度值小于所述第二拼图的实际边框宽度值时,重置所述第二拼图中的所有单元子图的布局信息。
可选的,所述方法还包括:所述第一布局信息以及所述第二布局信息中包括各单元子图的位置信息,其中,所述单元子图包括上边、下边、第一侧边以及第二侧边,所述位置信息包括,与所述单元子图的上边处于同一直线上的单元子图的索引,与所述单元子图的下边处于同一直线上的单元子图的索引,与所述单元子图的第一侧边处于同一直线上的单元子图的索引,以及与所述单元子图的第二侧边处于同一直线上的单元子图的索引。
本公开的一个或多个实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任意一种拼图的生成方法。
本公开的一个或多个实施例提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述任意一种拼图的生成方法。
从上面所述可以看出,本说明书一个或多个实施例的拼图的生成方法,在构建第一拼图后,可根据基于该第一拼图的编辑操作修改边框的宽度值,以及根据修改后的边框宽度值动态调整拼图中的各单元子图的布局信息,实现了快够构建拼图以及自动化调整拼图的目的,提高了构建拼图的效率。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例的拼图的生成方法的流程图;
图2为本说明书一个或多个实施例的拼图的生成方法的时序图;
图3为本说明书一个或多个实施例电子设备的框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本说明书一个或多个实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本说明书一个或多个实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1是根据本说明书一个或多个实施例示出的一种拼图的生成方法的流程图,如图1所示,该方法包括:
步骤102:获取用于构成拼图的至少两个初始图像;
在一个例子中,上述至少两个初始图像可以是用户向拼图软件输入的用于进行拼图的一组初始图像,该一组初始图像例如可以是以图像数组的形式提供给拼图软件。
步骤104:根据所述至少两个初始图像获取拼图模板的尺寸信息;
沿用上述例子,可根据上述图像数组的大小从数据库中获取到拼图模板的尺寸信息,其中,数据库中例如可以存储有2-8张图像对应的模板信息,该模板信息例如可以是一个数组,数组结构内容的单元信息为(pX,pY,pWidth,pHeight)其中,pX=单元子图左上顶点距离画布左上顶点的x轴值/当前画布宽度,pY=单元子图左上顶点距离画布左上顶点的y轴值/当前画布高度,pWidth=单元子图宽度/当前画布宽度,pHeight=单元子图高度/当前画布高度。
步骤106:根据所述拼图模板的尺寸信息获取布局数据以及画布数据;
沿用上述例子,可根据拼图模板的尺寸信息获取布局数组(为上述布局数据的一个示例)以及背景帧(为上述画布数据的一个示例)。
步骤108:根据所述至少两个初始图像、所述尺寸信息、所述画布数据以及所布局数据,生成单元子图,并将所述单元子图适配至所述拼图模板的每个单元中,得到第一拼图;
沿用上述例子,根据图像数组(为上述至少两个初始图像的一个示例)、布局数组以及背景帧通过比对计算生成新的帧,将生成的新帧适配到拼图模板中的每一个单元格中,即得到第一拼图。
步骤110:在检测到基于所述第一拼图的边框的第一编辑操作时,根据所述单元子图的最小边长以及所述拼图模板的边框的宽度值确定所述第一拼图的边框的宽度值,根据所述第一拼图的边框的宽度值确定所述单元子图的第一布局信息;
可选地,在得到上述第一拼图后,用户可拖拽该第一拼图的边框以实现对边框的编辑,在该种场景下,上述第一编辑操作例如是拖拽第一拼图的边框的操作,例如,拼图模板中的内容以模板比例信息平铺显示,故,当用户对边框进行设置时,需计算当前拼图模板中所有子单元图的布局,以及模板的边框值。其中,上述单元子图的最小边长为上述第一拼图中所有单元子图的边长中的最小值。例如,可根据上述单元子图的最小边长以及拼图模板的边框的宽度值确定出第一拼图可设置的最大边框宽度值maxBorder,可取小于maxBorder的值作为第一拼图的边框宽度值,其中,根据所述单元子图的最小边长以及所述拼图模板的画布边框宽度值确定所述第一拼图的最大边框宽度值,可包括,当所述最小边长为单元子图的高时,根据如下公式(1)计算所述最大边框宽度值;
maxBoder=(pHeight*canvasFrame.height–MinHeight)/(1+pHeight)(1);
当所述最小边长为单元子图的宽时,根据如下公式(2)计算所述最大边框宽度值;
maxBorder=(pWidth*canvasFrame.width-MinWidth)/(1+pWidth) (2)
其中,maxBoder为所述最大边框宽度值,pHeight为所述第一拼图中尺寸最小的单元子图的高度占画布高度的比例,canvasFrame.height为画布高度,pWidth为所述第一拼图中尺寸最小的单元子图的宽度,MinHeight为额定最小高度值,MinWidth为额定最小宽度值。
步骤112:根据所述第一拼图的边框的宽度值以及所述第一布局信息调整所述第一拼图,得到第二拼图。
本说明书一个或多个实施例的拼图的生成方法,在构建第一拼图后,可根据基于该第一拼图的编辑操作修改边框的宽度值,以及根据修改后的边框宽度值动态调整拼图中的各单元子图的布局信息,实现了快够构建拼图以及自动化调整拼图的目的,提高了构建拼图的效率。
在本说明书的一个或多个实施例中,上述拼图的生成方法还可包括:
在得到所述第一拼图之后,获取所述单元子图的第二布局信息;在得到第一拼图之后,各单元子图在该拼图中的第二布局信息即已经确定,由于在拼图的边框被编辑后,重新确定各单元子图的第一布局信息时,需要用到该第二布局信息,故可在得到第一拼图之后,获得各单元子图的第二布局信息。例如,可通过NSCopy协议,拷贝出一份Current布局信息。基于此,根据所述单元子图的最小边长以及所述拼图模板的边框的宽度值确定所述第一拼图的边框的宽度值,根据所述第一拼图的边框值确定所述单元子图的第一布局信息,可包括:
根据所述单元子图的最小边长以及所述拼图模板的画布边框宽度值确定所述第一拼图的最大边框宽度值,例如,可通过上述公式(1)来计算该最大边框宽度值。
根据所述最大边框宽度值确定所述第一拼图的边框的宽度值;例如,在小于最大边框宽度值的范围之内,设置第一拼图的边框的宽度值border。
将所述第一拼图的画布布局尺寸减去所述第一拼图的边框的宽度值,得到转换画布尺寸;例如,可仅输出计算得到的转换画布尺寸canvasFrame,而并不保存该值,使该值仅作为convertFrame,以方便对第一拼图中的各单元子图进行重新布局。
根据转换画布尺寸以及所述第二布局信息确定所述单元子图的尺寸信息;例如,可遍历current布局数组,取出各单元子图的layoutModel,该layoutModel指单元子图的四个坐标(pX,pY,pWidth,pHeight),其中,pX=单元子图左上顶点距离画布左上顶点的x轴值/当前画布宽度,pY=单元子图左上顶点距离画布左上顶点的y轴值/当前画布高度,pWidth=单元子图宽度/当前画布宽度,pHeight=单元子图高度/当前画布高度,以上述重新计算过的convertFrame重新按照比例输出假设无边框的各单元子图的尺寸,其中,假设无边框的单元子图指的是,在拼图模板中,各单元子图之间并不具有间隔,各单元子图的边框设置在各单元子图之内,这样,在移动各单元子图时,各单元子图的边框也随之一起移动。
根据所述第一拼图的边框的宽度值以及所述单元子图的尺寸信息,确定所述单元子图的所述第一布局信息,例如,所述单元子图的第一布局信息,可包括:
所述单元子图在X轴的最小坐标值为MinX+border/2,所述单元子图的在Y轴的最小坐标值为MinY+border/2,所述单元子图的宽度为Width-border,所述单元子图的高度为Height-border,其中,MinX为所述单元子图在X轴上的最小坐标值,MinY为所述单元子图在Y轴上的最小坐标值,Width为所述单元子图的宽度,Height所述单元子图的高度,border为所述第一拼图的边框的宽度值。
经过上述过程,完成对拼图的边框的配置,但由于边框配置伴随着圆角同时进行,当圆角超过当前各单元子图的最小边长的1/2时,会造成圆角锐化的问题。为了防止这种情况的出现,在本说明书的一个或多个实施例中,在对拼图的边框进行配置后,还可对圆角值进行重新配置。基于此,上述拼图的生成方法还可包括:
在检测到基于所述单元子图的圆角的第二编辑操作时,确定与所述第二编辑操作对应的目标圆角值;根据所述单元子图的最小边长确定所述单元子图的最大圆角值;第二编辑操作例如是对圆角的拖拽操作以改变圆角的大小,或对圆角值进行设置的操作以改变圆角的大小。在一个例子中,根据所述单元子图的最小边长确定所述单元子图的最大圆角值,可以是根据如下公式计算所述最大圆角值:
maxCorner=MinSide/2,其中,maxCorner为所述最大圆角值,MinSide为所述最小边长。
当所述目标圆角值不大于所述最大圆角值时,为所述单元子图执行所述第二编辑操作,若所述最大圆角值大于所述最大圆角值时,不响应所述第二编辑操作。
本说明书一个或多个实施例的拼图的生成方法在对圆角值或边框的宽度值进行设置时,考虑到了单元子图的最小边长,基于该最小边长确定最大圆角值以及最大边框宽度值,基于最大圆角值对目标圆角值进行限制,以及基于最大边框宽度值确定边框的目标宽度,从而可快速高效地将所有单元子图的布局进行修正,并且保证了边框以及圆角的唯一与统一性。
需要说明的是,对圆角编辑操作可发生在构建拼图的任意一个过程中,上例中在对边框进行设置之后,检测到对圆角的编辑操作仅为一种示例性情况,但在构建拼图的任何过程中检测到对圆角的编辑操作均需满足上述条件。
在上述实施例中,边框圆角的计算仅仅是在得到第一拼图后,未操作任何边框圆角时的单一操作的逻辑判断。当编辑了圆角,那么会重新计算边框值,此时,各单元子图的额定最小边长即是cornerValue(圆角值)*2,此时,如需计算上述最大边框宽度值,也需使用此处计算得到的最小边长,相应的,计算出的最大边框宽度值也随之改变,此时是以圆角为基础来确定边框的宽度值,而当原始边的宽度框值(指在未根据圆角值改变边框的宽度值之前的边框的宽度值)超过计算出的最大边框宽度值时,重置确定拼图中所有子图的布局。基于此,在本说明书的一个或多个实施例中,上述拼图的生成方法还可包括:在为所述单元子图执行所述第二编辑操作之后,根据所述目标圆角值确定所述单元子图的额定最小边长;根据所述额定最小边长重新计算所述第二拼图的最大边框宽度值;当计算得到的所述第二拼图的最大边框宽度值小于所述第二拼图的实际边框宽度值时,重置所述第二拼图中的所有单元子图的布局信息。通过对圆角以及边框的动态调整,可处理边框与圆角逻辑冲突的问题,可解决对拼图进行拖动操作时启用autoresizeingMask引起帧计算偏移的问题,其中,autoresizeingMask是一种相对布局设置,在启用autoresizeingMask后,可自动设置子视图与父视图的相对布局。
在本说明书的一个或多个实例中,上述拼图的生成方法还可包括:所述第一布局信息以及所述第二布局信息中包括各单元子图的位置信息,其中,所述单元子图包括上边、下边、第一侧边以及第二侧边,所述位置信息包括,与所述单元子图的上边处于同一直线上的单元子图的索引,与所述单元子图的下边处于同一直线上的单元子图的索引,与所述单元子图的第一侧边处于同一直线上的单元子图的索引,以及与所述单元子图的第二侧边处于同一直线上的单元子图的索引。例如,可在模板视图模型的原始布局信息中,保存有八个声明为NSSet的变量,该八个变量分别为:
topSet:记录以当前单元子图的minY为maxY的所有单元子图的索引;topSameSet:记录当前当前单元子图的minY为minY的所有单元子图的索引;leftSet:记录以当前单元子图的leftX为maxX的所有单元子图的索引;leftSameSet:记录以当前单元子图的leftX为minX的所有单元子图的索引;bottomSet:记录以当前单元子图的maxY为minY的所有单元子图的索引;bottomSameSet:记录以当前单元子图的maxY为maxY的所有单元子图的索引;rightSet:记录以当前单元子图的maxX为minX的所有单元子图的索引;rightSameSet:记录以当前单元子图的maxX为maxX的所有单元子图的索引。其中,minY表示当前单元子图在Y轴上的最小值,maxY表示当前单元子图在Y轴上的最大值,maxX表示当前单元子图在X轴上的最大值,leftX表示当前单元子图在X轴上的最小值。
基于上述八个变量,每当用户拖动某一单元子图时,判定*Set、*SameSet中单元子图的最小值,确定该最小值,不能小于额定值,以及不能超出canvasFrame(画布)的范围,每当检测到基于单元子图的操作都进行一一比对,从而可实现对拼图中的单元子图的拖动过程,以及通过计算,完成拼图模版拖动的逻辑。可通过UIPanGestureRecoginizer(为平移手势识别器,能识别拖拽操作),对每一个单元子图可以支持拖动交换单元子图的逻辑,交换完毕,删除之前的动画,以及交换当前与原始中位置,从而使单元子图完成移位。
本说明书的一个或多实施例提供了一种拼图的生成方法,该方法可基于MVVM架构来实现,MVVM架构分为Model(模型)层、ViewModel(视图模型)层、View(视图)层以及Controller(控制)层。Model层:涉及布局比例、页面逻辑、以及边框Model的保存。Controller层:用于进行ViewModel与View绑定,连接Controller与Controller之间的通信,以及View与View之间的外部关联。View层:模版视图,手势视图,以及各个分模块功能所涉及所有界面。View-Model层:模版单例ViewModel(视图模型)、比例Model、背景Model、布局Model、边框ViewModel。
以下结合图2对基于MVVM架构实现拼图的生成方法进行说明,如图2所示,其中,控制层可包括TemplateVC(模板控制)以及BorderVC(边框控制,视图层可包括TemplateView(模板视图)以及GestureView(手势视图),模型层可包括:ViewModel(视图模型)以及BorderViewModel(边框视图模型),该方法可通过调用自定义的类BIPOperationPublicManager(以下简称Manager)来实现,其中,Manager的输入为多个图像,输出为基于该多个图像构件的拼图,如图2所示,该方法包括:
步骤1:调用Manager,向其传入一个内容为UIImage的图像数组NSArray;
步骤2:Manager将图像数组NSArray传给TemplateVC;
步骤3:TemplateVC根据图像数组大小,从数据库获取到模版的比例信息(为上述拼图模板的尺寸信息的一个示例),将该比例信息以及图像数组进行初始化后发送给TemplateView;
步骤4:TemplateView将图像数组、布局数组以及画布数组(为上述画布数据的一个示例)发送给统一管理所有模版操作的ViewModel;
步骤5:ViewModel对图像数组、布局数组以及画布数组进行初始化后发送给GestureView;其中,ViewModel层主要包含原始布局信息,ViewModel层将图像数组、布局数组、以及画布数组根据上述比例信息通过比对计算生成新的帧适配到每一个单元子图中,再保存为原始画布布局数组;
步骤6:通过NSCopy协议,拷贝出一份Current布局信息(为上述第二布局信息的一个示例)给ViewModel;
除此之外,预留声明为BIPTemplateBorderModel边框模型,该模型涉及内容为圆角值、边框值(即为上述边框的边度值)以及渐变值,同时保留模版比例接口,最大边框值,最小边框值以及背景图。
步骤7:ViewModel将当前布局信息发送给TemplateView;
步骤8:TemplateVC将ViewModel与TemplateView进行绑定,进行界面展示,将数据传入TemplateView中,外部提供配置边框、圆角、以及渐变的接口;
步骤9:TemplateView内部每次视图出现时重新匹配TemplateView的canvasFrame(画布信息),通过ViewModel中Current布局信息重新计算GestureView中的内容,将所有GestureView全部绑定到TemplateView中,即得到上述第一拼图。
步骤10:检测到基于边框的编辑操作,得到编辑命令,将该编辑命令发送至BorderVC;
步骤11:BorderVC发送修改画布布局的消息给ViewModel;
步骤12:ViewModel向TemplateView发送重置消息;
步骤13:TemplateView进行重新布局计算:比对最小尺寸的GestureView与的实际高度值与额定最小边之间的差额,该差额例如可以大于0小于100,计算最大边框宽度值maxBorder。经过计算,当gestureView.frame(单元子图的边长)中最小值为height(高度)时,有如下公式:
maxBoder=(layoutModel.pHeight*canvasFrame.height–MinHeight)/(1+layoutModel.pHeight);
其中,pHeight为当前最小尺寸的单元子图的高度在canvasFrame.height(画布高度)中所占的比例,其值小于1。
当gestureView.frame中最小值为width(宽度)时,有如下公式:
maxBorder=(layoutModel.pWidth*canvasFrame.width-MinWidth)/(1+layoutModel.pWidth);
其中,pWidth为当前最小尺寸的单元子图的宽度在画布宽度中所占的比例,其值同样小于1。
步骤14:在小于maxBorder值的范围内,设置边框宽度border值,首先将ViewModel中所保存的canvasFrame(画布帧)减去border值,重新输出,并不保存canvasFrame新值,只是作为convertFrame(转换帧)方便重新布局
步骤15:遍历current布局数组,取出gestureView的layoutModel,以上述重新计算过的convertFrame重新按照比例输出假设无边框gesuterFrame;
步骤16:将边宽度框值在gestureFrame中,重新修改如下:
gestureView.frame=CGRectMake(MinX(gestureFrame)+border/2,MinY(gestureFrame)+border/2,Width(gesutreFrame)-border,Height(gestureFrame)-border)。
步骤17:将边框值修改为boder。
步骤18:BorderViewModel设置边框宽度值,计算最大圆角值,遍历current布局数组,得到gestureView中的最小值(即上述最小边长值),获取maxCorner=MinSide(gestureView.frame)/2;
步骤19:将maxCorner保存到ViewModel中,当圆角值超过maxCorner时,不进行任何操作。
步骤20:BorderVC检测到修改圆角值的操作,将修改圆角值的消息发送给BorderViewModel;
步骤21:BorderViewModel设置圆角值,计算最大边框值。
当进入到borderVC中,操作了圆角,那么会重新计算一下边框宽度值,此时,gestureView的最小额定尺寸即是cornerValue*2,而计算出的最大边框宽度值也随之改变,此时是以圆角为基础来进行判定最大边框宽度值,当原始边框值超过最大边框宽度值时,重置拼图的所有布局。
在本说明书的一个或多个实施例中,在开启了HDR(High-Dynamic Range,高动态范围图像)的拍照模式下,导出的UIImage图片,进行旋转、保存cgImageCopy(重新绘制的图片)的情况下,引起图片旋转,以及对称失真的情况下,可先对图片进行矫正,重新在绘制图像,在将绘制的图像传给上述Manager,以及与重新绘制的图像构建拼图。
本说明书的一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任意一种拼图的生成方法。
本说明书的一个或多个实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述任意一种拼图的生成方法。
需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
图3示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种拼图的生成方法,其特征在于,包括:
获取用于构成拼图的至少两个初始图像;
根据所述至少两个初始图像获取拼图模板的尺寸信息;
根据所述拼图模板的尺寸信息获取布局数据以及画布数据;
根据所述至少两个初始图像、所述尺寸信息、所述画布数据以及所布局数据,生成单元子图,并将所述单元子图适配至所述拼图模板的每个单元中,得到第一拼图;
在检测到基于所述第一拼图的边框的第一编辑操作时,根据所述单元子图的最小边长以及所述拼图模板的边框的宽度值确定所述第一拼图的边框的宽度值,根据所述第一拼图的边框的宽度值确定所述单元子图的第一布局信息;
根据所述第一拼图的边框的宽度值以及所述第一布局信息调整所述第一拼图,得到第二拼图。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在得到所述第一拼图之后,获取所述单元子图的第二布局信息;
根据所述单元子图的最小边长以及所述拼图模板的边框的宽度值确定所述第一拼图的边框的宽度值,根据所述第一拼图的边框值确定所述单元子图的第一布局信息,包括:
根据所述单元子图的最小边长以及所述拼图模板的画布边框宽度值确定所述第一拼图的最大边框宽度值;
根据所述最大边框宽度值确定所述第一拼图的边框的宽度值;
将所述第一拼图的画布布局尺寸减去所述第一拼图的边框的宽度值,得到转换画布尺寸;
根据转换画布尺寸以及所述第二布局信息确定所述单元子图的尺寸信息;
根据所述第一拼图的边框的宽度值以及所述单元子图的尺寸信息,确定所述第一布局信息。
3.根据权利要求2所述的方法,其特征在于,所述单元子图的第一布局信息,包括:
所述单元子图在X轴的最小坐标值为MinX+border/2,所述单元子图的在Y轴的最小坐标值为MinY+border/2,所述单元子图的宽度为Width-border,所述单元子图的高度为Height-border,其中,MinX为所述单元子图在X轴上的最小坐标值,MinY为所述单元子图在Y轴上的最小坐标值,Width为所述单元子图的宽度,Height所述单元子图的高度,border为所述第一拼图的边框的宽度值。
4.根据权利要求2所述的方法,其特征在于,根据所述单元子图的最小边长以及所述拼图模板的画布边框宽度值确定所述第一拼图的最大边框宽度值,包括,当所述最小边长为单元子图的高时,根据如下公式(1)计算所述最大边框宽度值;
maxBoder=(pHeight*canvasFrame.height–MinHeight)/(1+pHeight) (1);
当所述最小边长为单元子图的宽时,根据如下公式(2)计算所述最大边框宽度值;
maxBorder=(pWidth*canvasFrame.width-MinWidth)/(1+pWidth) (2)
其中,maxBoder为所述最大边框宽度值,pHeight为所述第一拼图中尺寸最小的单元子图的高度占画布高度的比例,canvasFrame.height为画布高度,pWidth为所述第一拼图中尺寸最小的单元子图的宽度,MinHeight为额定最小高度值,MinWidth为额定最小宽度值。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在检测到基于所述单元子图的圆角的第二编辑操作时,确定与所述第二编辑操作对应的目标圆角值;
根据所述单元子图的最小边长确定所述单元子图的最大圆角值;
当所述目标圆角值不大于所述最大圆角值时,为所述单元子图执行所述第二编辑操作,若所述最大圆角值大于所述最大圆角值时,不响应所述第二编辑操作。
6.根据权利要求5所述的方法,其特征在于,根据所述单元子图的最小边长确定所述单元子图的最大圆角值,包括根据如下公式计算所述最大圆角值:
maxCorner=MinSide/2,其中,maxCorner为所述最大圆角值,MinSide为所述最小边长。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在为所述单元子图执行所述第二编辑操作之后,根据所述目标圆角值重新确定所述单元子图的额定最小边长;
根据所述额定最小边长重新计算所述第二拼图的最大边框宽度值;
当计算得到的所述第二拼图的最大边框宽度值小于所述第二拼图的实际边框宽度值时,重置所述第二拼图中的所有单元子图的布局信息。
8.根据权利要求2至7任一项所述的方法,其特征在于,所述方法还包括:
所述第一布局信息以及所述第二布局信息中包括各单元子图的位置信息,其中,所述单元子图包括上边、下边、第一侧边以及第二侧边,所述位置信息包括,与所述单元子图的上边处于同一直线上的单元子图的索引,与所述单元子图的下边处于同一直线上的单元子图的索引,与所述单元子图的第一侧边处于同一直线上的单元子图的索引,以及与所述单元子图的第二侧边处于同一直线上的单元子图的索引。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8任一项所述的拼图的生成方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1至8任一项所述的拼图的生成方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010225897.3A CN113450251A (zh) | 2020-03-26 | 2020-03-26 | 拼图的生成方法、设备及存储介质 |
PCT/CN2021/080759 WO2021190335A1 (zh) | 2020-03-26 | 2021-03-15 | 拼图的生成方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010225897.3A CN113450251A (zh) | 2020-03-26 | 2020-03-26 | 拼图的生成方法、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113450251A true CN113450251A (zh) | 2021-09-28 |
Family
ID=77807397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010225897.3A Pending CN113450251A (zh) | 2020-03-26 | 2020-03-26 | 拼图的生成方法、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113450251A (zh) |
WO (1) | WO2021190335A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105046678A (zh) * | 2012-11-12 | 2015-11-11 | 北京奇虎科技有限公司 | 一种实现图片拼接的装置、方法和图片处理系统 |
CN106296622A (zh) * | 2015-05-27 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种自动布局的拼图方法及装置 |
CN106886418A (zh) * | 2017-03-27 | 2017-06-23 | 湛江市霞山区新软佳科技有限公司 | Html界面控件贴 |
US20190392621A1 (en) * | 2018-06-22 | 2019-12-26 | Shanghai Bilibili Technology Co., Ltd. | Banner image generation |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105867951A (zh) * | 2016-06-20 | 2016-08-17 | 中国建设银行股份有限公司 | 数据处理方法、装置及屏幕设计器 |
-
2020
- 2020-03-26 CN CN202010225897.3A patent/CN113450251A/zh active Pending
-
2021
- 2021-03-15 WO PCT/CN2021/080759 patent/WO2021190335A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105046678A (zh) * | 2012-11-12 | 2015-11-11 | 北京奇虎科技有限公司 | 一种实现图片拼接的装置、方法和图片处理系统 |
CN106296622A (zh) * | 2015-05-27 | 2017-01-04 | 阿里巴巴集团控股有限公司 | 一种自动布局的拼图方法及装置 |
CN106886418A (zh) * | 2017-03-27 | 2017-06-23 | 湛江市霞山区新软佳科技有限公司 | Html界面控件贴 |
US20190392621A1 (en) * | 2018-06-22 | 2019-12-26 | Shanghai Bilibili Technology Co., Ltd. | Banner image generation |
Non-Patent Citations (1)
Title |
---|
陈涛: ""美图秀秀 1.5.0新边框自适应图片大小"", 《HTTPS://WWW.PCPOP.COM/ARTICLE/411318.SHTML》, 21 June 2009 (2009-06-21), pages 1 * |
Also Published As
Publication number | Publication date |
---|---|
WO2021190335A1 (zh) | 2021-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109771951B (zh) | 游戏地图生成的方法、装置、存储介质和电子设备 | |
US20210035346A1 (en) | Multi-Plane Model Animation Interaction Method, Apparatus And Device For Augmented Reality, And Storage Medium | |
WO2020001014A1 (zh) | 图像美化方法、装置及电子设备 | |
JP6500355B2 (ja) | 表示装置、表示プログラム、および表示方法 | |
US20120229501A1 (en) | Method and a Computer System for Displaying and Selecting Images | |
WO2017024964A1 (zh) | 一种物品关联图片快速预览的方法以及装置 | |
KR20200035457A (ko) | 이미지 스플라이싱 방법 및 장치, 그리고 저장 매체 | |
US9330466B2 (en) | Methods and apparatus for 3D camera positioning using a 2D vanishing point grid | |
JP6401855B2 (ja) | Uiコントロールの背景を設定するための方法及び装置、並びに端末 | |
US20170365036A1 (en) | Method and apparatus for controlling image display during image editing | |
US20140225894A1 (en) | 3d-rendering method and device for logical window | |
US10761721B2 (en) | Systems and methods for interactive image caricaturing by an electronic device | |
WO2017032078A1 (zh) | 一种界面控制方法及移动终端 | |
US20160316151A1 (en) | Filter realization method and apparatus of camera application | |
CN105096364B (zh) | 一种动画数据生成方法、装置及电子设备 | |
CN113538623B (zh) | 确定目标图像的方法、装置、电子设备及存储介质 | |
CN113450251A (zh) | 拼图的生成方法、设备及存储介质 | |
WO2023056879A1 (zh) | 一种模型处理方法、装置、设备及介质 | |
US10990802B2 (en) | Imaging apparatus providing out focusing and method for controlling the same | |
JP7466689B2 (ja) | 画像表示方法、装置、機器及び記憶媒体 | |
CN106354381B (zh) | 图像文件的处理方法及装置 | |
CN111563956A (zh) | 一种二维图片的三维显示方法、装置、设备及介质 | |
CN114169304A (zh) | 表格创建方法、装置、电子设备及计算机可读存储介质 | |
TW201928725A (zh) | 一種導航引導圖的產生方法和裝置 | |
JP2014199990A (ja) | 多視点画像表示装置、多視点画像表示方法、多視点画像表示プログラム及び記録媒体 |
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 |