发明内容
有鉴于此,本发明的目的在于提出一种不规则截图方法及装置,能够任意截取所需要的区域的形状不规则的图片。
基于上述目的本发明提供的不规则截图方法,包括:
连续获取多个轨迹点的坐标并保存至PointList队列;
遍历PointList队列,从中找到x坐标的最大值、最小值以及y坐标的最大值、最小值;
根据x坐标的最大值、最小值以及y坐标的最大值、最小值,截取目标位置的背景透明的矩形图片;
利用连续获取的多个轨迹点在所述矩形图片上依次画点,得到闭合的不规则区域;
针对得到的闭合不规则区域,从原屏幕中复制该不规则区域对应的点的像素值;
将获得的像素值对应填充到背景透明的矩形图片中的不规则区域内,形成完整的不规则截图图片。
在一些实施方式中,所述连续获取多个轨迹点的坐标并保存至PointList队列的步骤包括:
从第一次捕获到点击指令时生成起始轨迹点;
随着点击位置变化,依次获取轨迹点,同时,在每个轨迹点的位置计算当前轨迹点与上一个轨迹点的距离差,当距离差大于第一预设阈值时,在当前轨迹点与上一个轨迹点之间新增一个虚拟轨迹点;每获得一个虚拟轨迹点则将其依次插入到PointList队列的队尾;
捕捉到点击指令释放时,生成结尾轨迹点并插入PointList队列;
在PointList队列中形成一副不规则截图的所有轨迹点的集合。
在一些实施方式中,所述在PointList队列中形成一副不规则截图的所有轨迹点的集合的步骤包括:
将所有轨迹点绘制成一条封闭曲线;
对所述封闭曲线上的点进行拟合,得到圆滑的封闭曲线;
将圆滑封闭曲线上的拟合点对应替换原有的轨迹点并保存。
在一些实施方式中,在所述连续获取多个轨迹点的坐标并保存至PointList队列的步骤之前,还包括:接收普通截图指令或对象截图指令。
在一些实施方式中,当接收到对象截图指令时,所述将获得的像素值对应填充到背景透明的矩形图片中的不规则区域内,形成完整的不规则截图图片的步骤包括:
对比不规则区域的边界附近的在第二预设阈值范围内的像素点的RGB值;
若靠近边界的像素点的RGB值与远离边界的像素点的RGB值之间存在突变差值,所述突变差值大于第三预设阈值时,停止填充突变差值大于第三预设阈值的靠近边界的像素点。
本发明的另一方面还提供了一种不规则截图装置,包括:
轨迹点获取模块,用于连续获取多个轨迹点的坐标并将其发送到存储模块由其保存至PointList队列;
矩形图片截取模块,用于遍历PointList队列,从中找到x坐标的最大值、最小值以及y坐标的最大值、最小值;并根据x坐标的最大值、最小值以及y坐标的最大值、最小值,截取目标位置的背景透明的矩形图片;
不规则区域绘制模块,用于利用连续获取的多个轨迹点在所述矩形图片上依次画点,得到闭合的不规则区域;
像素值提取模块,用于针对得到的闭合不规则区域,从原屏幕中复制该不规则区域对应的点的像素值;
不规则截图形成模块,用于将获得的像素值对应填充到背景透明的矩形图片中的不规则区域内,形成完整的不规则截图图片。
在一些实施方式中,所述轨迹点获取模块,还用于从第一次捕获到点击指令时生成起始轨迹点;随着点击位置变化,依次获取轨迹点,同时,在每个轨迹点的位置计算当前轨迹点与上一个轨迹点的距离差,当距离差大于第一预设阈值时,在当前轨迹点与上一个轨迹点之间新增一个虚拟轨迹点;每获得一个虚拟轨迹点则将其依次插入到PointList队列的队尾;捕捉到点击指令释放时,生成结尾轨迹点并插入PointList队列;以及,在PointList队列中形成一副不规则截图的所有轨迹点的集合。
在一些实施方式中,所述轨迹点获取模块,还用于将所有轨迹点绘制成一条封闭曲线;对所述封闭曲线上的点进行拟合,得到圆滑的封闭曲线;以及,将圆滑封闭曲线上的拟合点对应替换原有的轨迹点并保存。
在一些实施方式中,所述装置还包括截图指令接收模块,用于接收普通截图指令或对象截图指令。
在一些实施方式中,当截图指令接收模块接收到对象截图指令时,所述不规则截图形成模块还用于对比不规则区域的边界附近的在第二预设阈值范围内的像素点的RGB值;若靠近边界的像素点的RGB值与远离边界的像素点的RGB值之间存在突变差值,所述突变差值大于第三预设阈值时,停止填充突变差值大于第三预设阈值的靠近边界的像素点。
从上面所述可以看出,本发明提供的不规则截图方法及装置,通过连续获取多个轨迹点并根据轨迹点获取透明矩形图片,再在矩形图片的相应位置绘制不规则区域并从原屏幕中获取相应的像素值并对不规则区域进行填充,从而得到不规则截图图片;从而丰富了截图功能,提升了用户体验。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
参照附图1,为本发明提供的不规则截图方法实施例的流程示意图。
所述不规则截图方法,包括:
步骤101:连续获取多个轨迹点的坐标并保存至PointList队列;
用户在描绘不规则截图区域的时候会产生N个点来显示截图的区域的形状,假设这些点分别为P0、P1、P2…Pn,每个点保存了它自身的x、y坐标,比如Pm(x,y),并把所有这些点保存在一个轨迹的点队列PointList中;
步骤102:遍历PointList队列,从中找到x坐标的最大值、最小值以及y坐标的最大值、最小值;
步骤103:根据x坐标的最大值、最小值以及y坐标的最大值、最小值,截取目标位置的背景透明的矩形图片;
步骤104:利用连续获取的多个轨迹点在所述矩形图片上依次画点,得到闭合的不规则区域;
步骤105:针对得到的闭合不规则区域,从原屏幕中复制该不规则区域对应的点的像素值;
步骤106:将获得的像素值对应填充到背景透明的矩形图片中的不规则区域内,形成完整的不规则截图图片。
从上述实施例可以看出,本发明提供的不规则截图方法,通过连续获取多个轨迹点并根据轨迹点获取透明矩形图片,再在矩形图片的相应位置绘制不规则区域并从原屏幕中获取相应的像素值并对不规则区域进行填充,从而得到不规则截图图片;从而丰富了截图功能,提升了用户体验。
较佳的,参照附图2,为本发明提供的不规则截图方法实施例中步骤101的进一步具体流程示意图。
所述连续获取多个轨迹点的坐标并保存至PointList队列的步骤101还可进一步包括以下步骤:
步骤201:从第一次捕获到点击指令时生成起始轨迹点;所述点击指令可以是单击鼠标左键给出,亦或是在触摸屏上的进行触摸而给出,这取决于用户使用的设备类型;
步骤202:随着点击位置变化,依次获取轨迹点,同时,在每个轨迹点的位置计算当前轨迹点与上一个轨迹点的距离差,当距离差大于第一预设阈值时,在当前轨迹点与上一个轨迹点之间新增一个虚拟轨迹点;每获得一个虚拟轨迹点则将其依次插入到PointList队列的队尾;
步骤203:捕捉到点击指令释放时,生成结尾轨迹点并插入PointList队列;这里点击指令释放是指,点击鼠标的动作解除,亦或是触摸屏幕的物体离开屏幕;
步骤204:在PointList队列中形成一副不规则截图的所有轨迹点的集合。
通过在距离差超过第一预设阈值的两个轨迹点之间插入虚拟轨迹点,在形成不规则区域时则能得到更加平滑和完整的不规则区域。
可选的,所述在PointList队列中形成一副不规则截图的所有轨迹点的集合的步骤204还可进一步包括以下步骤:
将所有轨迹点绘制成一条封闭曲线;
对所述封闭曲线上的点进行拟合,得到圆滑的封闭曲线;
将圆滑封闭曲线上的拟合点对应替换原有的轨迹点并保存。
通过上述处理步骤,能够得到更加平滑的不规则区域,以防止因一时手滑在截图区域上产生的区域突变。
其中,将所有轨迹点绘制成一条封闭曲线的步骤中,若起始轨迹点与结尾轨迹点不重合时,或没有任何轨迹点之间重合时,可通过将起始轨迹点与结尾轨迹点之间用直线连接,从而将不规则曲线封闭。
可选的,在所述连续获取多个轨迹点的坐标并保存至PointList队列的步骤101之前,还包括步骤:接收普通截图指令或对象截图指令。其中,采用对象截图指令时,目的在于将屏幕中的人、花、桌子、椅子、窗户等对象进行指定截图。
具体的,当接收到对象截图指令时,所述将获得的像素值对应填充到背景透明的矩形图片中的不规则区域内,形成完整的不规则截图图片的步骤106还可进一步包括以下步骤:
对比不规则区域的边界附近的在第二预设阈值范围内的像素点的RGB值;
若靠近边界的像素点的RGB值与远离边界的像素点的RGB值之间存在突变差值,所述突变差值大于第三预设阈值时,停止填充突变差值大于第三预设阈值的靠近边界的像素点。
通过根据预先选择的不规则截图区域的边界计算其附近需要填充的像素点的像素值,将像素点的像素值进行两两对比,若出现像素值突变,则判断该处为截图对象的边缘,将靠近边界的像素点定义为截图对象边缘以外的点,不对其进行填充,则可得到截图对象的不规则截图,例如仅包含一朵花或一个人的不规则截图。
采用这种对象截图方法得到的不规则截图或许还可能存在边缘毛刺,可将边界曲线重新进行拟合后,得到新的不规则截图;不规则截图内若出现透明点,则可将其附近的点的像素值进行综合平均以后作为透明点的像素值进行填充。
需要特别指出的是,上述方法实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于所述方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
本发明的另一方面还提供了一种不规则截图装置,参照附图3,为本发明提供的不规则截图装置实施例的结构示意图。
所述不规则截图装置300,包括:
轨迹点获取模块302,用于连续获取多个轨迹点的坐标并将其发送到存储模块由其保存至PointList队列;
矩形图片截取模块303,用于遍历PointList队列,从中找到x坐标的最大值、最小值以及y坐标的最大值、最小值;并根据x坐标的最大值、最小值以及y坐标的最大值、最小值,截取目标位置的背景透明的矩形图片;
不规则区域绘制模块304,用于利用连续获取的多个轨迹点在所述矩形图片上依次画点,得到闭合的不规则区域;
像素值提取模块305,用于针对得到的闭合不规则区域,从原屏幕中复制该不规则区域对应的点的像素值;
不规则截图形成模块306,用于将获得的像素值对应填充到背景透明的矩形图片中的不规则区域内,形成完整的不规则截图图片。
从上述实施例可以看出,本发明提供的不规则截图装置,通过连续获取多个轨迹点并根据轨迹点获取透明矩形图片,再在矩形图片的相应位置绘制不规则区域并从原屏幕中获取相应的像素值并对不规则区域进行填充,从而得到不规则截图图片;从而丰富了截图功能,提升了用户体验。
较佳的,所述轨迹点获取模块302,还用于从第一次捕获到点击指令时生成起始轨迹点;随着点击位置变化,依次获取轨迹点,同时,在每个轨迹点的位置计算当前轨迹点与上一个轨迹点的距离差,当距离差大于第一预设阈值时,在当前轨迹点与上一个轨迹点之间新增一个虚拟轨迹点;每获得一个虚拟轨迹点则将其依次插入到PointList队列的队尾;捕捉到点击指令释放时,生成结尾轨迹点并插入PointList队列;以及,在PointList队列中形成一副不规则截图的所有轨迹点的集合。通过在距离差超过第一预设阈值的两个轨迹点之间插入虚拟轨迹点,在形成不规则区域时则能得到更加平滑和完整的不规则区域。
可选的,所述轨迹点获取模块302,还用于将所有轨迹点绘制成一条封闭曲线;对所述封闭曲线上的点进行拟合,得到圆滑的封闭曲线;以及,将圆滑封闭曲线上的拟合点对应替换原有的轨迹点并保存。通过上述处理步骤,能够得到更加平滑的不规则区域,以防止因一时手滑在截图区域上产生的区域突变。
进一步的,所述不规则截图装置300,还包括截图指令接收模块301,用于接收普通截图指令或对象截图指令。其中,采用对象截图指令时,目的在于将屏幕中的人、花、桌子、椅子、窗户等对象进行指定截图。
较佳的,当截图指令接收模块301接收到对象截图指令时,所述不规则截图形成模块306还用于对比不规则区域的边界附近的在第二预设阈值范围内的像素点的RGB值;若靠近边界的像素点的RGB值与远离边界的像素点的RGB值之间存在突变差值,所述突变差值大于第三预设阈值时,停止填充突变差值大于第三预设阈值的靠近边界的像素点。
通过根据预先选择的不规则截图区域的边界计算其附近需要填充的像素点的像素值,将像素点的像素值进行两两对比,若出现像素值突变,则判断该处为截图对象的边缘,将靠近边界的像素点定义为截图对象边缘以外的点,不对其进行填充,则可得到截图对象的不规则截图,例如仅包含一朵花或一个人的不规则截图。
采用这种对象截图方法得到的不规则截图或许还可能存在边缘毛刺,可将边界曲线重新进行拟合后,得到新的不规则截图;不规则截图内若出现透明点,则可将其附近的点的像素值进行综合平均以后作为透明点的像素值进行填充。
下面参照附图1,简要介绍采用本发明提供的不规则截图装置300进行不规则截图的方法:
所述不规则截图方法,包括:
步骤101:轨迹点获取模块302连续获取多个轨迹点的坐标并保存至PointList队列;
步骤102:矩形图片截取模块303遍历PointList队列,从中找到x坐标的最大值、最小值以及y坐标的最大值、最小值;
步骤103:矩形图片截取模块303根据x坐标的最大值、最小值以及y坐标的最大值、最小值,截取目标位置的背景透明的矩形图片;
步骤104:不规则区域绘制模块304利用连续获取的多个轨迹点在所述矩形图片上依次画点,得到闭合的不规则区域;
步骤105:像素值提取模块305针对得到的闭合不规则区域,从原屏幕中复制该不规则区域对应的点的像素值;
步骤106:不规则截图形成模块306将获得的像素值对应填充到背景透明的矩形图片中的不规则区域内,形成完整的不规则截图图片。
需要特别指出的是,上述装置的实施例仅采用了所述方法的实施例来具体说明各模块的工作过程,本领域技术人员能够很容易想到,将这些模块应用到所述方法的其他实施例中。当然,由于所述方法实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于所述装置也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在所述实施例之上。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。