一种连续多屏截图方法及其人机交互方式与流程

文档序号:12472002阅读:694来源:国知局
一种连续多屏截图方法及其人机交互方式与流程

本发明属于图像处理技术领域,尤其涉及一种截图方法及其人机交互方式。



背景技术:

在使用移动终端时经常会使用截屏功能,通过截屏功能可以将当前的屏幕画面截取下来保存,用户可以将截取的图片内容分享给他人。如果用户需要的内容正好是当前屏幕的内容,这样可以通过手机自带的截屏软件或第三方截屏软件进行屏幕截取。

但是,在实际应用中,由于移动终端的屏幕大小优先,有些内容需要滚动屏幕或者翻页才能看完,现有技术只针对当前屏幕画面进行截取,滚动屏幕或者翻页后只能另外截取,截取后为不同的图片,不能满足用户部分画面截屏的需求,也不能截取滑屏或翻页后的屏幕画面。

现有技术中,当需要保存的内容涉及到连续多屏时,用户需要手动滚动屏幕,在认为滚动完毕一屏后,对当前屏幕内容执行截屏操作,该过程重复多次,且需要用户手动去拼接图片,操作比较繁琐。

在某系手机(如魅族手机)中自带了滚动截屏一般是通过音量键或其他物理键进行连续截屏,这样用户无法准确的操作截屏直观的感受滚动截屏的内容变化,给用户带了诸多不便;或者是通过在右侧显示当前的屏幕缩略图进行滚动截屏,如锤子手机截屏,但是这样用户可操作性差,不能准确的控制截屏内容。

现有基于android平台的截屏方案,大部分无法实现超出当前屏幕内容的截取,即只能截取当前屏幕的内容。少部分能实现超出当前屏幕的内容截取,但是合成的长图效果差,图片有明显的错乱和重叠。



技术实现要素:

本发明的目的在于:提供一种连续多屏截图方法及其人机交互方式,以解决现有技术中对连续多屏内容截屏时,截屏图片存在错乱和重叠的问题,提高了用户操作体验,弥补了现有方案的不足,实现最终截屏图片的完整性、统一性和可操作性,满足用户对于长截屏的需求。

本发明采用的技术方案如下:

一种连续多屏截图方法,包括

步骤(S1),调用截屏命令,并完成对当前屏幕的截取,将之作为初始截屏图片;

步骤(S2),调用屏幕滚动命令,滚动当前屏幕;

步骤(S3),截取滚动后的屏幕,作为滚动截屏图片;

步骤(S4),检测滚动截屏图片与初始截屏图片的边缘,将滚动截屏图片与初始截屏图片合成为仅保留了所需要内容(如去掉了初始截屏图片中的导航栏以及滚动截屏图片中的标题栏和导航栏等)的合成图片,然后将此合成图片作为新的初始截屏图片;

步骤(S5),重复步骤(S2)~步骤(S4),直至截取、合成完毕。

进一步的,步骤(S2)中,滚动时间t=yΔ*3*2/density,其中,yΔ为水平移动的距离,density为截屏设备的密度。

进一步的,以屏幕上方为起点,屏幕下方为终点,设起点到终点的距离为1,步骤(S4)中,

对于初始截屏图片,所需要内容为:距屏幕的起点位置处至距起点3/4位置处;

对于滚动截屏图片,所需要内容为:距屏幕的起点1/4位置处至距起点3/4位置处。

进一步的,截取、合成完毕后的最终合成图片总高度th=(i-1)*h/2+h,其中,i为截屏次数,h为截图设备屏幕高度。

进一步的,步骤(S4)中,具体步骤如下:

步骤(S4-1),截取初始截屏图片和滚动截屏图片中所需要内容,取得截取后的初始截屏图片和滚动截屏图片;

步骤(S4-2),检测截取后的初始截屏图片和滚动截屏图片的边缘;

步骤(S4-3),对准待合成的截取后的初始截屏图片和滚动截屏图片;

步骤(S4-4),拼接已对准的截取后的初始截屏图片和滚动截屏图片。

进一步的,步骤(S4-2)中,对准的算法如下:

令:startIndex=3/4*screenHeight;

像素变换:p'[n][startIndex]=(p[n][startIndex>>16&0xff*35+p[n][startIndex]>>8&0xff*55+p[n][startIndex]&0xff*10)/100;

rg=∑n(abs(p'-p”));

n=n-1+4;(此处间隔4是为了提高效率)

i=min(rg);

其中,p为待拼接图片变换前的像素,p'为待拼接图片变换后的像素,p”为目标图片变换后的像素,rg为当前行的差异量,i为像素行;以当前行的差异量rg最小的像素行(最接近目标)作为拼接的起始位置。

进一步的,步骤(S3)中,具体包括:

步骤(S3-1),截取滚动后的屏幕,作为滚动截屏图片;

步骤(S3-2),随机选取滚动截屏图片的n个像素点进行比对,若相邻的两个像素点相同,则判断得出当前滚动截屏图片是同一张图片,从而判断到达屏幕底部;否则,一致比较相邻的两个像素点,直至到达屏幕底部;

步骤(S3-3),对滚动截屏图片进行二值化处理,消除滚动截屏图片上的干扰像素点。

进一步的,步骤(S3-2)中,两个像素点相同的判断标准是:

count(abs((((p1>>16)&0xff*35)+((p1>>8)&0xff*55)+(p1&0xff*10)/100)-(((p2>>16)&0xff*35)+((p2>>8)&0xff*55)+(p2&0xff*10)/100))<=8)>=0.96*n,其中,p1为像素点一,p2为像素点二,n为像素点的数量,且n∈[100~1000]。

进一步的,步骤(S3-3)中,二值化处理的变换方式为:po=(p>>16&0xff*35+p>>8&0xff*55+p&0xff*10)/100,其中,po为变换后的像素,p为变换前的像素。

一种利用连续多屏截图方法的人机交互方式,包括如下步骤:

步骤(B1),用户调用滚动截屏方法,进行相关滚动引擎的准备;

步骤(B2),截屏设备通过浮窗的形式显示滚动截屏控制面板于屏幕顶部,用户从滚动截屏控制面板获取到当前已经截取的屏幕数,并根据需要随时终止滚动截屏;

步骤(B3),用户通过滚动截屏控制面板控制采用了滚动延迟技术的滚动截屏核心组件开始工作,从当前屏幕开始截取屏幕并向下滚动;

步骤(B4),用户通过滚动截屏控制面板手动停止截屏或当前可滚动屏幕已到屏幕底部,截屏设备向用户展示最终合成的图片,以便用户进行预览和下一步操作。

综上所述,由于采用了上述技术方案,本发明的有益效果是:

本发明的连续多屏截图方法不同于现有技术的截屏方法,通过上述五个步骤去掉了用户不需要的图片内容,避免了内容干扰,滚动截图后,通过检测滚动截屏图片与初始截屏图片的边缘,每截一张滚动截屏图片就与之前的初始截屏图片合成,解决了现有技术中对连续多屏内容截屏时,截屏图片存在错乱和重叠的问题,提高了用户操作体验,弥补了现有方案的不足,实现最终截屏图片的完整性、统一性、可操作性,满足用户对于长截屏的需求。

本发明的人机交互方式区别于其他需要缩小到右侧或跳转一个界面来展示的形式,这种直接在当前页面附加上滚动截屏的相关控制组件,可以让用户更加直观的感受到滚动截屏并能更方便的控制截屏。

附图说明

图1是本发明的截屏方法示意图;

图2是本发明步骤(S4)中截屏设备上所需要内容的示意图—首次截图;

图3是本发明步骤(S4)中截屏设备上所需要内容的示意图—每次滚动后的滚动截屏图片;

图4是本发明步骤(S4)中截屏设备上所需要内容的示意图—新的初始截屏图片(第一次拼接后);

图5是本发明一种利用连续多屏截图方法的人机交互方式示意图。

具体实施方式

本说明书中公开的所有特征,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。

下面结合图1~图5对本发明作详细说明。

当应用于手机中时,若应用于安卓手机,首先得使用第三方或系统自带的root软件对设备进行root,获取设备的root权限。

一种连续多屏截图方法,包括

步骤(S1),通过adb shell命令调用截屏命令(screenshot-path),并完成对当前屏幕的截取,将之作为初始截屏图片;

步骤(S2),调用屏幕滚动命令(如input touchscreen swipe x_srcy_srcx_desy_des time),滚动当前屏幕;

步骤(S3),截取滚动后的屏幕,作为滚动截屏图片;

步骤(S4),检测滚动截屏图片与初始截屏图片的上、下方边缘,将滚动截屏图片与初始截屏图片合成为仅保留了所需要内容(如去掉了初始截屏图片中的导航栏2,以及去掉了滚动截屏图片中的标题栏1和导航栏2,仅保留了滚动截屏图片中的有效内容部分3)的合成图片,然后将此合成图片作为新的初始截屏图片;

步骤(S5),重复步骤(S2)~步骤(S4),直至截取、合成完毕。

其中:步骤(S2)中,调用屏幕滚动命令(即swipe命令)的距离和时间有一个关系:在320dp,density=2的截屏设备下:

v=(1/3pix)/ms,其中,v表示速度,pix是像素单位,ms表示毫秒;

即滚动时间t=yΔ*3*2/density,其中,yΔ为水平移动的距离,density为截屏设备的密度。

以屏幕上方为起点,屏幕下方为终点,设起点到终点的距离为1,步骤(S4)中,

对于初始截屏图片,所需要内容为:距屏幕的起点位置处至距起点3/4位置处;

对于滚动截屏图片,所需要内容为:距屏幕的起点1/4位置处至距起点3/4位置处;

对于新的初始截屏图片,所需要内容为:前初始截屏图片+滚动截屏图片。

其目的为了解决对于某些头部有标题的界面,同理,以屏幕3/4结束也是为了防止底部导航栏干预截屏内容。——预处理

截取、合成完毕后的最终合成图片总高度th=(i-1)*h/2+h,其中,i为截屏次数,h为截图设备屏幕高度。

以下是举例说明:假设当前屏幕高度为800,第一屏为0-800像素,第二屏滚动1/2屏幕即400像素(指的是去掉上面1/4和下面1/4之后剩下的400像素),此时合成的有效区域为第一次截屏的0-600加上第二次截屏的200-600,所以此时合成后的图片为0-1000像素的内容,同理,第三屏,第四屏以依次类推,此处不再赘述。

步骤(S3)中,具体包括:

步骤(S3-1),截取滚动后的屏幕,作为滚动截屏图片;

步骤(S3-2),随机选取滚动截屏图片的n个像素点进行比对,若相邻的两个像素点相同,则判断得出当前滚动截屏图片是同一张图片,从而判断到达屏幕底部;否则,一致比较相邻的两个像素点,直至到达屏幕底部;

步骤(S3-3),对滚动截屏图片进行二值化处理,消除滚动截屏图片上的干扰像素点。

步骤(S3-2)中,两个像素点相同的判断标准是:

count(abs((((p1>>16)&0xff*35)+((p1>>8)&0xff*55)+(p1&0xff*10)/100)-(((p2>>16)&0xff*35)+((p2>>8)&0xff*55)+(p2&0xff*10)/100))<=8)>=0.96*n,其中,p1为像素点一,p2为像素点二,n为像素点的数量,且n∈[100~1000]。

步骤(S3-3)中,二值化处理的变换方式为:po=(p>>16&0xff*35+p>>8&0xff*55+p&0xff*10)/100,其中,po为变换后的像素,p为变换前的像素。

步骤(S4)中,具体步骤如下:

步骤(S4-1),截取初始截屏图片和滚动截屏图片中所需要内容,取得截取后的初始截屏图片和滚动截屏图片;

步骤(S4-2),检测截取后的初始截屏图片和滚动截屏图片的边缘;

步骤(S4-3),对准待合成的截取后的初始截屏图片和滚动截屏图片;

步骤(S4-4),拼接已对准的截取后的初始截屏图片和滚动截屏图片,即按照上述举例说明中的方式拼接。

步骤(S4-2)中,对准的算法如下:

令:startIndex=3/4*screenHeight;

像素变换:p'[n][startIndex]=(p[n][startIndex>>16&0xff*35+p[n][startIndex]>>8&0xff*55+p[n][startIndex]&0xff*10)/100;

rg=∑n(abs(p'-p”));

n=n-1+4;(此处间隔4是为了提高效率)

i=min(rg);(找出最接近目标的像素行)

其中,p为待拼接图片变换前的像素,p'为待拼接图片变换后的像素,p”为目标图片变换后的像素,rg为当前行的差异量,i为像素行;以当前行的差异量rg最小的像素行i(最接近目标)作为拼接的起始位置。

上述中,此处“带拼接图片”指的是,每次调用屏幕滚动获取到的单张图片,如:滚了3屏,那么就有6张带拼接的图片,相当于上面所说的滚动截屏图片。

一种利用连续多屏截图方法的人机交互方式,此方式用户可以方便的控制滚动截屏的开始和结束,方便用户操作。

步骤(B1),用户调用滚动截屏方法,进行相关滚动引擎的准备,此时会弹出toast并提示用户“滚动截屏即将启动”;

步骤(B2),截屏设备通过浮窗的形式显示滚动截屏控制面板于屏幕顶部,用户可以从该面板获取到当前已经截取的屏幕数,并可以根据需要随时终止滚动截屏。这区别于其他需要缩小到右侧或跳转一个界面来展示的形式,这种直接在当前页面附加上滚动截屏的相关控制组件,可以让用户更加直观的感受到滚动截屏并能更方便的控制截屏;

步骤(B3),用户通过滚动截屏控制面板控制滚动截屏核心组件开始工作,截取并当前屏幕开始向下滚动,用户可以看到具体滚动到的位置和截取的内容,方便用户对截取内容的确定。在滚动的过程中采用了滚动延迟技术,这样可以留给用户足够的时间来控制滚动,决定是否需要停止滚动截屏引擎。

步骤(B4),用户通过滚动截屏控制面板手动停止截屏或当前可滚动屏幕已到屏幕底部(由于滚动截屏的核心引擎里有判断当前屏幕是否滚动到底部的判断逻辑并自动停止),此时将向用户展示最终合成的图片,以便用户进行预览和下一步操作。(由于在整个过程中,图片是在同步的进行处理,所以当用户点击结束或程序自动判断结束后,最终的图片很快就会合成,大大的减少了用户等待图片合成的时间)至此整个滚动截屏结束。

通过以上方法可以完成绝大多数移动平台的设备对于可以滚动的界面完成滚动截屏,最终合成一张完整的长图片。图片没有明显的拼接合成迹象,从而解决了用户对于设备上长图截屏的需求,免去了用户通过其他工具一张一张图片拼接的烦恼。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1