本發(fā)明涉及智能終端截屏領域,尤其涉及一種截取長篇幅屏幕內(nèi)容的方法及系統(tǒng)。
背景技術:
隨著移動終端訪問網(wǎng)頁應用的場景越發(fā)頻繁,如何方便地一次性截取長篇幅屏幕內(nèi)容成為了困擾人們的問題。尤其是對于屏幕較小的移動終端,對長篇幅屏幕內(nèi)容需要進行分次截屏操作,不僅操作非常繁瑣且效率低下。
目前,用戶通常選用第三方應用實現(xiàn)對長篇幅屏幕內(nèi)容進行截屏操作,但是,現(xiàn)有的截屏第三方應用存在一些缺陷:一方面,需要用戶自行手動滑動屏幕來讓工具截取屏幕,拼湊出一張長篇幅的截圖,顯然,用戶無法精確計算每次滑動了多少距離,造成拼接出來的長篇幅截圖出現(xiàn)部分內(nèi)容重疊或被覆蓋的問題;另一方面,第三方應用的開發(fā)者自定義了視圖的滾動行為,造成截屏操作的兼容性差;此外,當需要截屏的長篇幅屏幕內(nèi)容存在不規(guī)則背景時,會因采用圖片差分出現(xiàn)識別經(jīng)常出錯,導致截屏操作過早結(jié)束、截屏出現(xiàn)大部分重疊等錯誤結(jié)果。
因此,現(xiàn)有技術還有待于改進和發(fā)展。
技術實現(xiàn)要素:
鑒于上述現(xiàn)有技術的不足,本發(fā)明的目的在于提供一種截取長篇幅屏幕內(nèi)容的方法及系統(tǒng),旨在解決現(xiàn)有的長篇幅屏幕內(nèi)容截屏過程不僅操作繁瑣、兼容性不足,且準確性差、易出錯的問題。
本發(fā)明的技術方案如下:
一種截取長篇幅屏幕內(nèi)容的方法,其中,包括步驟:
a、智能終端接收用戶的截屏指令,獲取目標頁面的總長度,并設置顯示容器的長度及平移次數(shù);
b、截取當前屏幕的顯示內(nèi)容,并按照預設方向?qū)⑺鲲@示容器自動平移一個屏幕高度的距離,并將每次截屏操作獲得的圖片記為差片圖片n,n為截屏的次數(shù);
c、重復步驟b,直至接收到結(jié)束指令,將所述差片圖片n按順序進行合成,得到整個長篇幅屏幕內(nèi)容的截圖。
所述的截取長篇幅屏幕內(nèi)容的方法,其中,所述步驟a中,設置顯示容器的長度不大于所述目標頁面的總長度,對目標頁面的總長度與一個屏幕高度的比值進行取整操作,得到所述平移次數(shù)。
所述的截取長篇幅屏幕內(nèi)容的方法,其中,所述步驟b具體包括:
b1、截取當前屏幕顯示內(nèi)容后,將所獲得的圖片記為差片圖片n,并進行存儲;
b2、通過標準視窗接口控制所述顯示容器,按照預設方向自動平移一個屏幕高度的距離。
所述的截取長篇幅屏幕內(nèi)容的方法,其中,所述步驟c中,所述結(jié)束指令為智能終端檢測到獲取的差片圖片個數(shù)與平移次數(shù)相同,或智能終端接收用戶指令,結(jié)束截屏操作。
所述的截取長篇幅屏幕內(nèi)容的方法,其中,所述步驟c具體包括步驟:
c1、智能終端將所述差片圖片按順序進行合成,得到整個長篇幅屏幕內(nèi)容的截圖;
c2、檢測所述截圖末端是否有空白部分,當是時,將所述空白部分從截圖末端剪裁掉。
所述的截取長篇幅屏幕內(nèi)容的方法,其中,所述步驟c之后還包括步驟:
d、將所述顯示容器的長度恢復至一個屏幕高度,將所述將平移次數(shù)恢復至0。
一種截取長篇幅屏幕內(nèi)容的系統(tǒng),其中,包括:
設置模塊,用于智能終端接收用戶的截屏指令,獲取目標頁面的總長度,并設置顯示容器的長度及平移次數(shù);
平移截屏模塊,用于截取當前屏幕的顯示內(nèi)容,并按照預設方向?qū)⑺鲲@示容器自動平移一個屏幕高度的距離,并將每次截屏操作獲得的圖片記為差片圖片n,n為截屏的次數(shù);
合成調(diào)整模塊,用于平移模塊的操作,直至接收到結(jié)束指令,將所述差片圖片n按順序進行合成,得到整個長篇幅屏幕內(nèi)容的截圖。
所述的截取長篇幅屏幕內(nèi)容的系統(tǒng),其中,所述平移截屏模塊包括:
截屏單元,用于截取當前屏幕顯示內(nèi)容后,將所獲得的圖片記為差片圖片n,并進行存儲;
平移單元,用于通過標準視窗接口控制所述顯示容器,按照預設方向自動平移一個屏幕高度的距離。
所述的截取長篇幅屏幕內(nèi)容的系統(tǒng),其中,所述合成調(diào)整模塊包括:
合成單元,用于智能終端將所述差片圖片按順序進行合成,得到整個長篇幅屏幕內(nèi)容的截圖;
剪裁單元,用于檢測所述截圖末端是否有空白部分,當是時,將所述空白部分從截圖末端剪裁掉。
所述的截取長篇幅屏幕內(nèi)容的系統(tǒng),其中,還包括:
恢復模塊,用于將所述顯示容器的長度恢復至一個屏幕高度,將所述將平移次數(shù)恢復至0。
有益效果:本發(fā)明通過預設顯示容器的高度,且標準視窗接口控制所述顯示容器在每次截屏后,自動按照預設的方向移動一個屏幕高度的距離,直至截屏操作結(jié)束,并將獲得的多個截屏圖片按順序進行拼接,獲得整個長篇幅屏幕內(nèi)容的截圖。該方法不涉及模擬滑動屏幕的方案,兼容性好;采用標準視窗接口控制所述顯示容器每次移動固定距離,操作簡單、準確性高。
附圖說明
圖1為本發(fā)明一種截取長篇幅屏幕內(nèi)容的方法較佳實施例的流程圖。
圖2為圖1所述步驟s2的具體流程圖。
圖3為圖1所述步驟s3的具體流程圖。
圖4為本發(fā)明一種截取長篇幅屏幕內(nèi)容的系統(tǒng)較佳實施例的結(jié)構(gòu)框圖。
圖5為圖4中所述平移截屏模塊200的具體結(jié)構(gòu)框圖。
圖6為圖4中所述合成調(diào)整模塊300的具體結(jié)構(gòu)框圖。
具體實施方式
本發(fā)明提供一種截取長篇幅屏幕內(nèi)容的方法及系統(tǒng),為使本發(fā)明的目的、技術方案及效果更加清楚、明確,以下對本發(fā)明進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
請參考圖1,圖1為本發(fā)明一種截取長篇幅屏幕內(nèi)容的方法較佳實施例的流程圖,從圖1中可以看出,所述方法包括步驟:
s1、智能終端接收用戶的截屏指令,獲取目標頁面的總長度,并設置顯示容器的長度及平移次數(shù);
s2、截取當前屏幕的顯示內(nèi)容,并按照預設方向?qū)⑺鲲@示容器自動平移一個屏幕高度的距離,并將每次截屏操作獲得的圖片記為差片圖片n,n為截屏的次數(shù);
s3、重復步驟s2,直至接收到結(jié)束指令,將所述差片圖片n按順序進行合成,得到整個長篇幅屏幕內(nèi)容的截圖。
本方法通過預設顯示容器的高度,且標準視窗接口控制所述顯示容器在每次截屏后,自動按照預設的方向移動一個屏幕高度的距離,直至截屏操作結(jié)束,并將獲得的多個截屏圖片按順序進行拼接,獲得整個長篇幅屏幕內(nèi)容的截圖。該方法不僅操作簡單、兼容性好,且準確性高、不易出錯。
在步驟s1中,智能終端接收用戶的截屏指令,獲取目標頁面的總長度,并設置顯示容器的長度及平移次數(shù);對于智能終端,其顯示容器的長度僅有一個屏幕的高度,平移次數(shù)通常設置為0次;也就是說,當用戶滑動智能終端的屏幕上顯示的內(nèi)容時,智能終端屏幕上每次更新內(nèi)容的篇幅是由用戶滑動的距離決定的,并非用戶滑動一下,更新內(nèi)容的篇幅固定。因此,用戶在利用第三方應用進行截圖時,每次移動一定距離后,屏幕上方相應距離高度的內(nèi)容會被其下方內(nèi)容取代,這就需要用戶每次都準確記住移動的高度(即更新內(nèi)容的篇幅),以便拼接后的截圖內(nèi)容完整、流暢。也就是說,在截屏過程中,每次滑動的距離是用戶手動操作的,難以準確控制。
而本發(fā)明中,根據(jù)后臺獲取的目標頁面的總長度設置顯示容器的長度,進一步的,設置顯示容器的長度不大于所述目標頁面的總長度,將顯示容器的高度設置的過大,如為目標頁面的總長度的幾倍,會嚴重占用系統(tǒng)內(nèi)存,拖慢運行速度;優(yōu)選的,設置所述顯示容器的長度與目標頁面的總長度相等,便于后續(xù)的平移操作順利完成;更優(yōu)選的,設置所述顯示容器的長度小于所述目標頁面的總長度,且為所述屏幕高度的整數(shù)倍,同時,與顯示器高度相同的目標頁面的內(nèi)容全部截屏后,尚未收到結(jié)束指令,可擴大顯示器高度,直至收到結(jié)束指令;如檢測到目標頁面的總長度為8個屏幕高度,將所屬顯示容器的高度設為4個屏幕高度,當進行4次截圖后,仍未收到接收指令,則將顯示容器的高度增加至為6或8個屏幕高度,直到收到結(jié)束指令。該方法有效減低顯示容器所占用的內(nèi)存容量,且當用戶需要截取的內(nèi)容僅為目標頁面的總長度的一部分時,截屏效率較高。
對目標頁面的總長度與一個屏幕高度的比值進行取整操作,得到所述平移次數(shù),所述取整操作是指,當對目標頁面的總長度與一個屏幕高度的比值未非整數(shù)時,平移次數(shù)為所述比值的整數(shù)部分加1,如比值為7.01,平移次數(shù)為7+1=8;比值為6.99,平移次數(shù)為6+1=7。所述長篇幅屏幕內(nèi)容在是指超過一個屏幕尺寸的內(nèi)容,所述一個屏幕尺寸可以是一個屏幕的高度,也可以是一個屏幕的長度。
在步驟s2中,截取當前屏幕的顯示內(nèi)容,并按照預設方向?qū)⑺鲲@示容器自動平移一個屏幕高度的距離,并將每次截屏操作獲得的圖片記為差片圖片n,n為截屏的次數(shù)。
具體的,請參考圖2,圖2為圖1所述步驟s2的具體流程圖,從圖2可以看出,所述步驟s2具體包括:
s21、截取當前屏幕顯示內(nèi)容后,將所獲得的圖片記為差片圖片n,并進行存儲;
s22、通過標準視窗接口控制所述顯示容器,按照預設方向自動平移一個屏幕高度的距離。
在本實施例中,第n次截屏操作時,將所獲得的圖片記為差片圖片n,并按順序儲存起來;之后通過標準視窗接口(settranslationy/x)控制所述顯示容器,按照預設方向自動平移一個屏幕高度的距離。也就是說,本發(fā)明按照預設的方向,每次截取的目標頁面的高度固定(即更新內(nèi)容的篇幅固定),即為一個屏幕的高度,因此,不需要記錄每次截取到哪里了,通過后臺自動操作,過程簡單。所述預設方向可以是左右(settranslationx)也可以是上下(settranslationy),只需設置相應的標準視窗接口種類。該過程可以在后臺通過設置該容器進行向預定方向,使整個篇幅平滑、無中間過程(無動畫過程、無需等待幾乎即刻生效)的展現(xiàn)出下一個容器高度或容器寬度的內(nèi)容,以便進行下一次截屏操作。
在步驟s3中,重復步驟s2,直至接收到結(jié)束指令,將所述差片圖片n按順序進行合成,得到整個長篇幅屏幕內(nèi)容的截圖,所述次數(shù)為獲得截屏的先后順序,也就是截屏次數(shù)n值從小到大順序。所述結(jié)束指令為智能終端檢測到獲取的差片圖片個數(shù)n與平移次數(shù)相同,或智能終端接收用戶指令,結(jié)束截屏操作。顯示容器的長度與當前智能終端屏幕高度的比值,即為截屏次數(shù)n。當設置所述顯示容器的長度與目標頁面的總長度相等時,當獲得了n個截圖后,結(jié)束截屏操作,將得到的n個截圖按順序拼接,合成整個長篇幅屏幕內(nèi)容的截圖。當設置所述顯示容器的長度小于目標頁面的總長度時,系統(tǒng)檢測第n張圖片是否已經(jīng)是目標頁面的末端,當是時,結(jié)束截屏操作,將得到的n個截圖按順序拼接,得到整個長篇幅屏幕內(nèi)容的截圖。當否時,增加所述顯示容器的長度直到收到結(jié)束指令。同時,用戶在觀察顯示容器按照預設方向自動平移過程中,如果當前屏幕顯示內(nèi)容即為所需截屏內(nèi)容的重點,用戶可以發(fā)出結(jié)束指令,結(jié)束截屏操作。所述指令可以為包含預設內(nèi)容的聲音指令、觸摸屏幕指令或按下某個物理按鍵。
具體的,請參考圖3,圖3為圖1所述步驟s3的具體流程圖,從圖3可以看出,步驟s3的具體包括步驟:
s31、智能終端將所述差片圖片按順序進行合成,得到整個長篇幅屏幕內(nèi)容的截圖;
s32、檢測所述截圖末端是否有空白部分,當是時,將所述空白部分從截圖末端剪裁掉。
在本實施例中,將得到的差片圖片按順序進行合成,得到整個長篇幅屏幕內(nèi)容的截圖;檢測所述截圖末端是否有空白部分,當時是,將所述空白部分從截圖末端剪裁掉。這樣能夠使獲得的長篇幅屏幕內(nèi)容的截圖與目標頁面內(nèi)容完全一致,多余的空白部分,更加美觀。同時,當獲得的截屏個數(shù)小于n時,用戶就主動結(jié)束截屏操作的,不需進行空白檢測操作。
進一步的,所述步驟s3之后還包括步驟:
s4、將所述顯示容器的長度恢復至一個屏幕高度,將所述將平移次數(shù)恢復至0。也就是將顯示容器長度和平移次數(shù)恢復至常規(guī)狀態(tài),這樣能避免大量占用內(nèi)存,影響智能終端的運行速度。
基于上述方法,本發(fā)明還公開了一種截取長篇幅屏幕內(nèi)容的系統(tǒng),請參考圖4,圖4為本發(fā)明一種截取長篇幅屏幕內(nèi)容的系統(tǒng)較佳實施例的結(jié)構(gòu)框圖,從圖4中可以看出,所述系統(tǒng)具體包括:
設置模塊100,用于智能終端接收用戶的截屏指令,獲取目標頁面的總長度,并設置顯示容器的長度及平移次數(shù);
平移截屏模塊200,用于截取當前屏幕的顯示內(nèi)容,并按照預設方向?qū)⑺鲲@示容器自動平移一個屏幕高度的距離,并將每次截屏操作獲得的圖片記為差片圖片n,n為截屏的次數(shù);
合成調(diào)整模塊300,用于平移模塊的操作,直至接收到結(jié)束指令,將所述差片圖片n按順序進行合成,得到整個長篇幅屏幕內(nèi)容的截圖。
進一步的,圖5為圖4中所述平移截屏模塊200的具體結(jié)構(gòu)框圖,從圖5可以看出,所述平移截屏模塊200的具體包括:
截屏單元210,用于截取當前屏幕顯示內(nèi)容后,將所獲得的圖片記為差片圖片n,并進行存儲;
平移單元220,用于通過標準視窗接口控制所述顯示容器,按照預設方向自動平移一個屏幕高度的距離。
進一步的,圖6為圖4中所述合成調(diào)模塊300的具體結(jié)構(gòu)框圖,從圖6可以看出,所述合成調(diào)整模300的具體包括:
合成單元310,用于智能終端將所述差片圖片按順序進行合成,得到整個長篇幅屏幕內(nèi)容的截圖;
剪裁單元320,用于檢測所述截圖末端是否有空白部分,當是時,將所述空白部分從截圖末端剪裁掉。、
更進一步的,所述的截取長篇幅屏幕內(nèi)容的系統(tǒng),還包括:
恢復模塊,用于將所述顯示容器的長度恢復至一個屏幕高度,將所述將平移次數(shù)恢復至0。
本發(fā)明方法由于本發(fā)明通過將代碼集成入framework.jar中,與平臺系統(tǒng)一并發(fā)布實現(xiàn)該功能。主要功能集成入系統(tǒng)的組件端(component),而非僅僅獨立應用,所以可以在所有的應用上進行本發(fā)明功能的使用。本發(fā)明進行截圖的是系統(tǒng)進程systemui,不在應用本地進行保存,而且由于是集成入系統(tǒng),不需要額外的root權限,因此保證了系統(tǒng)的安全性。
綜上所述,本發(fā)明提供了一種截取長篇幅屏幕內(nèi)容的方法及系統(tǒng),本發(fā)明的技術方案直接對視圖容器進行平移,不采用模擬滑屏消息的方案,所以不存在兼容性差的問題;采用標準視窗接口(settranslationy/x)進行平移,直接設置每次平移的距離相同,完全不需要計算“到底滑動了多少了距離”,一次到位,簡單快捷,通用性好。
應當理解的是,本發(fā)明的應用不限于上述的舉例,對本領域普通技術人員來說,可以根據(jù)上述說明加以改進或變換,所有這些改進和變換都應屬于本發(fā)明所附權利要求的保護范圍。