发明内容
为解决上述问题,本发明实施例公开了一种阴影特效图的生成方法及装置。技术方案如下:
一种阴影特效图的生成方法,可以包括:
接收用户的阴影特效添加指令,确定目标阴影特效;
新建目标画布,在新建的目标画布上,创建目标图片第一副本,所述目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数,与所述目标阴影特效的偏移参数相同,其中,所述偏移参数包括:偏移方向及偏移距离;
将所述目标图片第一副本各像素的色彩参数,替换为所述目标阴影特效的色彩参数;
在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,使得所述目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,从而生成所述目标图片的阴影特效图。
在本发明的一种优选实施方式中,在接收用户的阴影特效添加指令,确定目标阴影特效之后,还包括:
检测目标图片是否包含透明区域;
在目标图片包含透明区域的情况下,执行新建目标画布,在新建的目标画布上,创建目标图片第一副本的步骤。
在本发明的一种优选实施方式中,所述检测目标图片是否包含透明区域,包括:
获取目标图片对应的像素二维矩阵,分析所述像素二维矩阵中每个像素的透明度参数,如果所述目标图片中透明度参数满足预设的透明度阈值范围的像素数大于等于预设的像素数M,则确定所述目标图片包含透明区域,其中,M≥1。
在本发明的一种优选实施方式中,所述分析所述像素二维矩阵中每个像素的透明度参数,如果所述目标图片中透明度参数满足预设的透明度阈值范围的像素数大于等于预设的像素数M,则确定所述目标图片包含透明区域,包括:
遍历所述像素二维矩阵,分析所述像素二维矩阵中每个像素的透明度参数,如果已分析到的透明度参数满足预设的透明度阈值范围的像素数等于预设的像素数M,则停止遍历,确定所述目标图片包含透明区域。
在本发明的一种优选实施方式中,所述检测目标图片是否包含透明区域,包括:
获取目标图片对应的像素二维矩阵,分析所述像素二维矩阵中每个像素的透明度参数,如果所述目标图片中透明度参数满足预设的透明度阈值范围的像素数占所述目标图片总像素数的比例大于等于预设的比例阈值,则确定所述目标图片包含透明区域。
在本发明的一种优选实施方式中,所述透明度参数的取值范围是0~1,且透明度参数越小,透明度越高。
相应于上面的方法,本发明还提供了一种阴影特效图的生成装置,可以包括:
阴影添加指令接收模块,用于接收用户的阴影特效添加指令,确定目标阴影特效;
目标图片第一副本创建模块,用于新建目标画布,在新建的目标画布上,创建目标图片第一副本,所述目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数与所述目标阴影特效的偏移参数相同,其中,所述偏移参数包括:偏移方向及偏移距离;
色彩参数替换模块,用于将所述目标图片第一副本各像素的色彩参数替换为所述目标阴影特效的色彩参数;
目标图片第二副本创建模块,用于在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,使得所述目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,从而生成所述目标图片的阴影特效图。
在本发明的一种优选实施方式中,所述装置还包括:
图片透明区域检测模块,用于在阴影添加指令接收模块接收用户的阴影特效添加指令,确定目标阴影特效后,检测目标图片是否包含透明区域;并在目标图片包含透明区域的情况下,触发目标图片第一副本创建模块新建目标画布,在新建的目标画布上,创建目标图片第一副本。
在本发明的一种优选实施方式中,所述图片透明区域检测模块,包括:
第一像素二维矩阵获取子模块,用于获取目标图片对应的像素二维矩阵;
第一像素透明度分析子模块,用于分析所述像素二维矩阵中每个像素的透明度参数,如果所述目标图片中透明度参数满足预设的透明度阈值范围的像素数大于等于预设的像素数M,则确定所述目标图片包含透明区域,其中,M≥1。
在本发明的一种优选实施方式中,所述第一像素透明度分析子模块,具体用于:
遍历所述像素二维矩阵,分析所述像素二维矩阵中每个像素的透明度参数,如果已分析到的透明度参数满足预设的透明度阈值范围的像素数等于预设的像素数M,则停止遍历,确定所述目标图片包含透明区域。
在本发明的一种优选实施方式中,所述图片透明区域检测模块,包括:
第二像素二维矩阵获取子模块,用于获取目标图片对应的像素二维矩阵;
第二像素透明度分析子模块,用于分析所述像素二维矩阵中每个像素的透明度参数,如果所述目标图片中透明度参数满足预设的透明度阈值范围的像素数占所述目标图片总像素数的比例大于等于预设的比例阈值,则确定所述目标图片包含透明区域。
在本发明的一种优选实施方式中,所述透明度参数的取值范围是0~1,且透明度参数越小,透明度越高。
本发明的技术方案,先在新建的目标画布上创建目标图片第一副本,所述目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数与所述目标阴影特效的偏移参数相同,并将目标图片第一副本的色彩参数替换为所述目标阴影特效的色彩参数,最后,在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,使得所述目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,而目标图片第一副本没有被目标图片第二副本覆盖的区域,就成为目标图片的阴影。这样就实现了为目标图片添加阴影特效的目的。
尤其是当目标图片内有透明区域的情况下,采用本发明的技术方案,可以根据图片中实际图像的轮廓添加阴影特效,与现有技术只能根据图片实际轮廓添加阴影特效相比,阴影特效更加真实。
具体实施方式
如背景技术所述,图1所示的图片在采用现有技术为其增加阴影特效时,得到的效果图只能如图2所示,即在整张图片的边缘增加一定的效果。从图2可以看出,所得到的效果比较突兀,并没有根据图片的实际所显示的图像来增加阴影特效。与用户预期的效果相差较大,实用性不强。
为了改善现有技术中存在的这一问题,发明人创造性的提供一种阴影特效图的生成方法,应用该方法,可以有效改善现有技术的问题,可以针对图片中图像的实际轮廓添加阴影特效。
首先,对本发明提供的一种阴影特效图的生成方法进行说明,该方法可以包括:
接收用户的阴影特效添加指令,确定目标阴影特效;
新建目标画布,在新建的目标画布上,创建目标图片第一副本,所述目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数与所述目标阴影特效的偏移参数相同,其中,所述偏移参数包括:偏移方向及偏移距离;
将所述目标图片第一副本各像素的色彩参数替换为所述目标阴影特效的色彩参数;
在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,使得所述目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,从而生成所述目标图片的阴影特效图。
本发明的技术方案,先在新建的目标画布上创建目标图片第一副本,所述目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数与所述目标阴影特效的偏移参数相同,并将目标图片第一副本的色彩参数替换为所述目标阴影特效的色彩参数,最后,在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,使得所述目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,而目标图片第一副本没有被目标图片第二副本覆盖的区域,就成为目标图片的阴影。这样就实现了为目标图片添加阴影特效的目的。
尤其是当目标图片内有透明区域的情况下,采用本发明的技术方案,可以根据图片中实际图像的轮廓添加阴影特效,与现有技术只能根据图片实际轮廓添加阴影特效相比,阴影特效更加真实。
需要说明的是,实现上述阴影特效图的生成方法的功能软件可以是独立的应用软件,也可以相关软件的插件,这都是合理的,该功能软件可以安装于电子设备中,这里所说的电子设备,一般指计算机、平板电脑或智能手机等,电子设备的具体形式本发明对此并不需要进行限定。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图3为本发明提供的一种阴影特效图的生成方法,可以包括:
S101,接收用户的阴影特效添加指令,确定目标阴影特效.
为了能够使用本发明所提供的方法给图片添加阴影特效,首先相关应用软件需要预先存储一些阴影特效,对于这些阴影特效本发明没有特殊要求,现有技术中的任一阴影特效都可以应用于本发明的技术方案,阴影特效对于本领域技术人员来说是比较常见的,因此,本发明实施例在这里对其不作具体的描述。
这里所说的阴影特效添加指令,在实际使用过程中,可以是用户选择阴影特效的一个操作动作,例如点击某个阴影特效的图标等等,该方法的具体实施方式可以采用现有技术中的相关技术方案来实现,本发明在此不作具体限定。在用户选择了一款阴影特效后,该阴影特效即为目标阴影特效。
S102,新建目标画布,在新建的目标画布上,创建目标图片第一副本,所述目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数与所述目标阴影特效的偏移参数相同,其中,所述偏移参数包括:偏移方向及偏移距离。
在执行主体确定了确定目标阴影特效后,就可以新建一个画布,该画布即为目标画布。然后在目标画布上创建目标图片第一副本,该第一副本中各元素的色彩参数与透明度参数与目标图片是完全一致的。但是目标图片第一副本在目标画布中的位置坐标与目标图片在其画布中的位置坐标是不同的。目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数与所述目标阴影特效的偏移参数相同;其中,所述偏移参数包括:偏移方向及偏移距离。
例如,目标阴影特效的偏移参数为(1,1),目标图片中某个元素在画布中的坐标为(5,10),那么在创建目标图片第一副本时,目标图片第一副本与目标图片中相对应的元素,在目标画布中的坐标为(6,11)。
创建目标画布及目标图片第一副本的具体实施方案可以采用现有技术中相关的技术方案来实现,本发明在此不作具体限定。
在实际应用过程中,如图4所示,在S101确定目标阴影特效之后,还可以增加一个透明区域检测机制。具体的,在S101接收用户的阴影特效添加指令,确定目标阴影特效之后,该方法还可以包括:
S101A,检测目标图片是否包含透明区域;
在目标图片包含透明区域的情况下,再执行S102新建目标画布,在新建的目标画布上,创建目标图片第一副本。
这里所说的目标图片是否包含透明区域可以是指该目标图片所包含的所有像素中,是否包含有预设透明度的像素,且像素数量达到一定值,如果是,就确定目标图片包含透明区域。下面以RGB色彩模式对其进行进一步的说明。众所周知,在RGB色彩模式中,一个像素的颜色可以用(r,g,b,α)表示,其中,r,g,b这三个参数分量是像素的色彩参数,而α这个分量是像素的透明度参数。在这个模式中规定,α的取值范围是0~1,当α=0时,表示该像素是完全透明的,当α=1时,表示该像素是完全不透明的。当α越靠近0时,该像素的透明度越高。本发明的技术方案应用RGB色彩模式时,可以对α预先设定一个透明度预值范围,这样,如果任一像素的α处于该透明度预值范围,就可以确定该像素为透明像素。例如可以设定α的透明度预值范围0~0.9,这样,当检到像素的α值为0~0.9中的任意值时,就可以确定该像素为透明像素,如果检测到这样的透明像素达到一定数量,就可以确定该图片包含透明区域,这里所说的透明像素所要达到的数量,可以由本领域技术人员自行确定,本发明在此不作具体限定。
需要说明的是,上述的RGB色彩模式只是为了描述方便而列举的一个实例,在实际使用过程中也可以采用其它的色彩模式来实现本发明的技术方案,例如CMYK色彩模式等。一种优选的实施方式是,使用RGB色彩模式来实现本发明的技术方案,当遇到其它色彩模式时,可以将其它色彩模式转化为RGB色彩模式来实现本发明的技术方案。
在实际使用过程中,本领域技术人员在实现检测目标图片是否包含透明区域这一步骤时,可以采用下列各实施方式:
第一种实施方式为:获取目标图片对应的像素二维矩阵,分析所述像素二维矩阵中每个像素的透明度参数,如果所述目标图片中透明度参数满足预设的透明度阈值范围的像素数大于等于预设的像素数M,则确定所述目标图片包含透明区域,其中,M≥1。M的具体值可以由本领域技术人员来确定。
在上述的第一种实施方式中,可以遍历目标图片中所有的像素,分析所有像素的透明度参数,然后再进行统计,如果所述目标图片中透明度参数满足预设的透明度阈值范围的像素数大于等于预设的像素数M,则确定所述目标图片包含透明区域。
但是这种遍历所有像素的方式对于执行主体来说工作量还是比较大的,因此,为了进一步减少执行主体的工作量,可以采用的第二种实施方式为:遍历所述像素二维矩阵,分析所述像素二维矩阵中每个像素的透明度参数,如果已分析到的透明度参数满足预设的透明度阈值范围的像素数等于预设的像素数M,则停止遍历,确定所述目标图片包含透明区域。
这种方式采用一边分析一边统计的模式,当统计到透明度参数满足预设的透明度阈值范围的像素数等于预设的像素数M,则停止遍历,确定所述目标图片包含透明区域。这样,就可以减小执行主体的工作量,提高效率。
上述的两种实施方式都是统计像素数实际的数量,在实际应用过程中,还可以统计透明度参数满足预设的透明度阈值范围的像素数的比例,其具体方法如下:获取目标图片对应的像素二维矩阵,分析所述像素二维矩阵中每个像素的透明度参数,如果所述目标图片中透明度参数满足预设的透明度阈值范围的像素数占所述目标图片总像素数的比例大于等于预设的比例阈值,则确定所述目标图片包含透明区域。这里的比例预值就可以由本领域技术人员自行确定,本发明在此不作具体限定。
需要说明的是,本发明在此所列举的三种实施方式仅供本领域技术人员进行参考,并不表明其它的实施方式不能实现本发明的技术方案,本领域技术人员在本发明的启示下所得到的其它的实施方式,都在本发明的保护范围之内。
S103,将所述目标图片第一副本各像素的色彩参数替换为所述目标阴影特效的色彩参数。
在创建了目标图片第一副本后,就可以用目标阴影特效的色彩参数来替换目标图片第一副本各像素的色彩参数。
例如,目标阴影特效的颜色可以用RGB色彩模式表示为(33,33,33,1),目标图片第一副本中任一像素的颜色为(15,60,125,0),那么在创建了目标图片第一副本后,可以使用OpenGLSL将上述目标图片第一副本中的像素的色彩参数(15,60,125)替换为目标阴影特效的色彩参数(33,33,33)。如果采用其它的色彩模式,其技术案是相似的,本发明在此不作赘述。
进一步需要说明的是,除了OpenGLSL以外,也可以采用其它图形程序接口,本发明在此不作具体限定。
S104,在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,使得所述目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,从而生成所述目标图片的阴影特效图。
在用目标阴影特效的色彩参数来替换目标图片第一副本各像素的色彩参数后,在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,且目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,最终生成所述目标图片的阴影特效图。
本发明的技术方案,在目标图片如图1所示(图片中部含有完全透明的区域,即含有透明度参数α=0的区域)包含透明区域的情况下,在新建的目标画布上创建目标图片第一副本,如图5(目标图片的坐标位置如虚线所示)所示,所述目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数与所述目标阴影特效的偏移参数相同;并将目标图片第一副本的色彩参数替换为所述目标阴影特效的色彩参数,如图6所示,最后,在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,使得所述目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,从而生成所述目标图片的阴影特效图,如图7所示。将图7与图1的对比可以看出,不仅在图1外轮廓的右侧和下侧添加了阴影特效,在图1内部透明区域的上侧和左侧也添加了阴影特效。所添加的阴影特效更符合图片实际的特点。
相应于上面的方法实施例,本发明还提供了一种阴影特效图的生成装置,如图8所示,包括:
阴影添加指令接收模块101,用于接收用户的阴影特效添加指令,确定目标阴影特效;
目标图片第一副本创建模块102,用于新建目标画布,在新建的目标画布上,创建目标图片第一副本,所述目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数与所述目标阴影特效的偏移参数相同,其中,所述偏移参数包括:偏移方向及偏移距离;
色彩参数替换模块103,用于将所述目标图片第一副本各像素的色彩参数替换为所述目标阴影特效的色彩参数;
目标图片第二副本创建模块104,用于在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,使得所述目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,从而生成所述目标图片的阴影特效图。
本发明的技术方案,先在新建的目标画布上创建目标图片第一副本,所述目标图片第一副本中任一像素坐标相对于所述目标图片中对应像素坐标的偏移参数与所述目标阴影特效的偏移参数相同,并将目标图片第一副本的色彩参数替换为所述目标阴影特效的色彩参数,最后,在目标画布上与所述目标图片具有相同坐标的位置创建目标图片第二副本,使得所述目标图片第二副本覆盖替换色彩参数后的目标图片第一副本,而目标图片第一副本没有被目标图片第二副本覆盖的区域,就成为目标图片的阴影。这样就实现了为目标图片添加阴影特效的目的。
尤其是当目标图片内有透明区域的情况下,采用本发明的技术方案,可以根据图片中实际图像的轮廓添加阴影特效,与现有技术只能根据图片实际轮廓添加阴影特效相比,阴影特效更加真实。
在本发明的一种优选实施方式中,如图9所示,装置还可以包括:
图片透明区域检测模块101A,用于在阴影添加指令接收模块接收用户的阴影特效添加指令,确定目标阴影特效后,检测目标图片是否包含透明区域;并在目标图片包含透明区域的情况下,触发目标图片第一副本创建模块新建目标画布,在新建的目标画布上,创建目标图片第一副本。
在实际应用过程中,所述图片透明区域检测模块101A,可以包括:
第一像素二维矩阵获取子模块,用于获取目标图片对应的像素二维矩阵;
第一像素透明度分析子模块,用于分析所述像素二维矩阵中每个像素的透明度参数,如果所述目标图片中透明度参数满足预设的透明度阈值范围的像素数大于等于预设的像素数M,则确定所述目标图片包含透明区域,其中M≥1。
在图片透明区域检测模块102包含第一像素二维矩阵获取子模块及第一像素透明度分析子模块的装置中,所述第一像素透明度分析子模块,可以具体用于:
遍历所述像素二维矩阵,分析所述像素二维矩阵中每个像素的透明度参数,如果已分析到的透明度参数满足预设的透明度阈值范围的像素数等于预设的像素数M,则停止遍历,确定所述目标图片包含透明区域。
在本发明的一种优选实施方式中,所述图片透明区域检测模块101A,还可以包括:
第二像素二维矩阵获取子模块,用于获取目标图片对应的像素二维矩阵;第一像素透明度分析子模块,用于分析所述像素二维矩阵中每个像素的透明度参数,如果所述目标图片中透明度参数满足预设的透明度阈值范围的像素数占所述目标图片总像素数的比例大于等于预设的比例阈值,则确定所述目标图片包含透明区域。
在本发明的一种优选实施方式中,所述透明度参数的取值范围是0~1,且透明度参数越小,透明度越高。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。