发明内容
有鉴于此,本发明实施例提供一种图像处理方法、装置、电子设备及存储介质,能够提高填色游戏中的图像显示效果。
第一方面,本发明实施例提供一种图像处理方法,包括:
获取用户输入的原始坐标;
利用所述原始坐标以及目标颜色值,对线条纹理贴图中的待填充区域中进行填充,其中,所述线条纹理贴图为基于Unity引擎设置的;
显示填充后的线条纹理贴图。
结合第一方面,在第一方面的第一种实施方式中,
所述利用所述原始坐标以及目标颜色值,对线条纹理贴图中的待填充区域中进行填充,包括:
将所述原始坐标转换为贴图坐标,其中,所述贴图坐标为将所述原始坐标转换到贴图空间后的坐标;
判断所述待填充区域的边界区域;
基于洪水填充算法,利用所述贴图坐标以及目标颜色值对所述待填充区域中除所述边界区域以外的区域进行填充。
结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,
所述将所述原始坐标转换为贴图坐标,包括:
将所述原始坐标转换为世界坐标;
将所述世界坐标转换为贴图空间内的坐标;
对所述贴图空间内的坐标进行像素率转换,获得所述贴图坐标。
结合第一方面,在第一方面的第三种实施方式中,
在所述获取用户输入的原始坐标之前,所述方法还包括:
对待处理的线条纹理贴图进行属性设置;
在Unity引擎中创建精灵,并将属性设置后的线条纹理贴图赋值给所述精灵,以实现图像的显示。
第二方面,本发明实施例提供一种图像处理装置,包括:
转换模块,用于获取用户输入的原始坐标;
填充模块,用于利用所述原始坐标以及目标颜色值,对线条纹理贴图中的待填充区域中进行填充,其中,所述线条纹理贴图为基于Unity引擎设置的;
处理模块,用于显示填充后的线条纹理贴图。
结合第二方面,在第二方面的第一种实施方式中,所述填充模块包括:
获取子模块,用于将所述原始坐标转换为贴图坐标,其中,所述贴图坐标为将所述原始坐标转换到贴图空间后的坐标;
判断子模块模块,用于判断所述待填充区域的边界区域;
填充子模块,用于基于洪水填充算法,利用所述贴图坐标以及目标颜色值对所述待填充区域中除所述边界区域以外的区域进行填充。
结合第二方面的第一种实施方式中,在第二方面的第二种实施方式中,
所述获取子模块包括:
第一转换单元,用于将所述原始坐标转换为世界坐标;
第二转换单元,用于将所述世界坐标转换为贴图空间内的坐标;
获取单元,用于对所述贴图空间内的坐标进行像素率转换,获得所述贴图坐标。
结合第二方面,在第二方面的第三种实施方式中,还包括:
设置模块,用于对待处理的线条纹理贴图进行属性设置;
赋值模块,用于在Unity引擎中创建精灵,并将属性设置后的线条纹理贴图赋值给所述精灵,以实现图像的显示。
第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的方法。
第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一所述的方法。
在本发明实施例中,使用贴图坐标以及目标颜色值对基于Unity引擎设置的线条纹理贴图进行填充,并形成待显示图像。因此,利用本发明实施例的方案可使得填充的颜色具有多样性,从而提高了图像的显示效果。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明的实施例图像处理方法的示意图,如图1所示,本实施例的应用场景是填色游戏。本实施例的方法可以包括:
步骤101、获取用户输入的原始坐标。
本实施例中,用户的原始坐标指的是通过触摸、点击等方式输入的坐标。例如,当用户点击触摸屏时,在触摸屏上形成的触摸点的坐标即使在此的原始坐标。
步骤102、利用所述原始坐标以及目标颜色值,对线条纹理贴图中的待填充区域中进行填充,其中,所述线条纹理贴图为基于Unity引擎设置的。
具体的,首先,将所述原始坐标转换为贴图坐标。所述贴图坐标为将所述原始坐标转换到贴图空间后的坐标。
具体的转换过程包括,将所述原始坐标转换为世界坐标,然后,将所述世界坐标转换为贴图空间内的坐标,并对所述贴图空间内的坐标进行像素率转换,获得所述贴图坐标。
具体的,将用户输入的坐标从屏幕空间坐标转换为贴图坐标时,使用函数Camera.ScreenToWorldPoint()将屏幕坐标转换为世界坐标。再使用函数Transform.InverseTransfromPoint()将世界坐标转换为贴图空间内的坐标。最后,将坐标值乘上单位到像素转换率(100),得到贴图坐标,并使用MathfRoundToInt()取整数。
然后,判断所述待填充区域的边界区域。
例如,可将待填充点的颜色和边界区域的目标颜色进行比较,若一致,则为边界区域。否则,可认为不是边界区域。
本实施例中,目标颜色值可以为黑色颜色值(0,0,0)。
接着,基于洪水填充算法,利用所述贴图坐标以及目标颜色值对所述待填充区域中除所述边界区域以外的区域进行填充。
在此,主要是基于洪水填充算法,利用所述贴图坐标以及黑色颜色值对所述待填充区域中除所述边界区域以外的区域进行填充。否则,可结束流程。
步骤103、显示填充后的线条纹理贴图。
在本发明实施例中,使用贴图坐标以及目标颜色值对基于Unity引擎设置的线条纹理贴图进行填充,并形成待显示图像。因此,利用本发明实施例的方案可使得填充的颜色具有多样性,从而提高了图像的显示效果。
图2为本发明图像处理方法实施例二的流程图。如图2所示,本实施例的方法可以包括:
步骤201、基于Unity引擎设置所述线条纹理贴图。
为提高填充效果,还可首先基于Unity引擎设置所述线条纹理贴图。
具体的,对待处理的线条纹理贴图进行属性设置,在Unity引擎中创建精灵(Sprite),并将属性设置后的线条纹理贴图赋值给所述精灵。Sprite在2D游戏术语里面是指像素图,是2D游戏中最基础的组件。在显示图像时,可调用精灵,从而显示图像。
在实际应用中,可获取待处理的线条纹理贴图,准备区域位置,数字信息文件等。其中该数字信息文件包含区域信息数组(区域uid,区域数字中心点坐标,区域中心直径,区域对应的调色板id),调色板数组(调色板颜色rgb值,调色板id,所包含的区域数组)。然后,将线条纹理图设置为2D贴图模式,设置文件属性为可读可写,将压缩模式设置为无压缩。接着,在Unity引擎中创建Sprite(精灵),将线条纹理贴图加载进内存,并赋值给Sprite。
例如,可使用Assetbundle.Load()方法将线条纹理贴图加载到内存中,使用CreateSprite方法创建Sprite精灵,将创建的Sprite赋值给SpriteRenderer即可正常显示。进一步的,还可将数字信息文件加载到内存,并循环读取,并标记在线条纹理贴图中。例如,可使用AssetBundle.LoadAsset方法加载到内存,并转换为Json对象。
步骤202、获取用户输入的原始坐标,并将所述原始坐标转换为贴图坐标。
步骤203、利用所述贴图坐标以及黑色颜色值,对线条纹理贴图中的待填充区域中进行填充。
步骤202和203的描述可参照实施例一中步骤101、102的描述。
步骤204、显示填充后的线条纹理贴图。
在此实施例中,填充过程如下:
(1)准备线条纹理贴图,注水点坐标,注入初始颜色,颜色容忍度信息等。
(2)获取线条纹理贴图的高度,宽度信息,颜色数据等。
(3)获取注水点坐标对应的颜色值。
(4)创建坐标队列,并将注水点坐标加入到队列中。
(5)判断队列是否为空,如果还包含数据则进入第六步。
(6)获取取出队头坐标,以该队头的横坐标为起点,向横坐标增加的方向移动单位距离,并获取每个坐标点的贴图颜色值,直到坐标值到达贴线条纹理贴图的度值。
(7)取出第六步坐标值对应的贴图颜色值,并进行颜色测试。如果该点颜色值和注水点颜色值距离没有在容忍度范围内或者该点颜色值和注入初始颜色值一致,则执行后续。
(8)将注入初始颜色值赋值给该坐标点的纹理颜色。
(9)获取取出队头坐标,以该队头的纵坐标为起点,向纵坐标增加的方向移动1个单位距离,并检查是否在纹理高度内。如果在高度内则取出该点颜色,做颜色容忍度测试并判断色彩值是否不相等。如果条件满足则将该坐标插入队列尾部,否则进入(10)。
(10)以该队头的纵坐标为起点,向纵坐标减小的方向移动1个单位距离,并检查是否在并取出该点颜色,做颜色容忍度测试并判断色彩值是否不相等。如果条件满足则将该坐标插入队列尾部。
(11)在(6)的坐标基础上,将坐标值的X坐标向左移动1个单位距离,并对其元素做(7)-(10)的操作,直到坐标X值等于0。
(12)将最新的颜色数组数据赋值给纹理颜色数组。
(13)将纹理颜色应用,提交GPU(Graphics Processing Unit,图形处理器),显示在屏幕上。
需要说明的是,在本发明实施例中是以黑色来限定边界区域。那么,在其他应用场景中,随着边界区域的形式不同,它所对应的颜色也会不同。因此,可根据边界区域的具体情况,将本发明实施例中的黑色替换为其他的颜色。
在本发明实施例中,使用贴图坐标以及目标颜色值对基于Unity引擎设置的线条纹理贴图进行填充,并形成待显示图像。因此,利用本发明实施例的方案可使得填充的颜色具有多样性,从而提高了图像的显示效果。
图3为本发明图像处理装置实施例一的结构示意图,如图3所示,本实施例的装置可以包括:
转换模块31,用于获取用户输入的原始坐标;填充模块32,用于利用所述原始坐标以及目标颜色值,对线条纹理贴图中的待填充区域中进行填充,其中,所述线条纹理贴图为基于Unity引擎设置的;处理模块33,用于显示填充后的线条纹理贴图。
其中,所述填充模块32包括:获取子模块321,用于将所述原始坐标转换为贴图坐标,其中,所述贴图坐标为将所述原始坐标转换到贴图空间后的坐标;判断子模块模块322,用于判断所述待填充区域的边界区域;填充子模块323,用于基于洪水填充算法,利用所述贴图坐标以及目标颜色值对所述待填充区域中除所述边界区域以外的区域进行填充。
其中,所述获取子模块321包括:第一转换单元3211,用于将所述原始坐标转换为世界坐标;第二转换单元3212,用于将所述世界坐标转换为贴图空间内的坐标;获取单元3213,用于对所述贴图空间内的坐标进行像素率转换,获得所述贴图坐标。
其中,所述目标颜色值为黑色颜色值;所述填充子模块323具体用于,基于洪水填充算法,利用所述贴图坐标以及黑色颜色值对所述待填充区域中除所述边界区域以外的区域进行填充。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图4为本发明图像处理装置实施例三的结构示意图,如图4所示,本实施例的装置在图3所示装置结构的基础上,进一步地,所述装置还可包括:设置模块34,用于对待处理的线条纹理贴图进行属性设置;赋值模块35,用于在Unity引擎中创建精灵,并将属性设置后的线条纹理贴图赋值给所述精灵,以实现图像的显示。
本实施例的装置,可以用于执行图1或图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例还提供一种电子设备,图5为本发明电子设备一个实施例的结构示意图,可以实现本发明图1-2所示实施例的流程。如图5所示,上述电子设备可以包括:壳体51、处理器52、存储器53、电路板54和电源电路55,其中,电路板55安置在壳体51围成的空间内部,处理器52和存储器53设置在电路板55上;电源电路55,用于为上述电子设备的各个电路或器件供电;存储器53用于存储可执行程序代码;处理器52通过读取存储器53中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的方法。
处理器52对上述步骤的具体执行过程以及处理器52通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-2所示实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述任一所述的方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。