支持移動終端的時間空間關聯的個性化定製圖片管理方法與流程
2023-12-02 10:47:06

本發明涉及網際網路移動終端軟體應用領域,特別是支持移動終端的時間空間關聯的個性化定製圖片管理方法。
背景技術:
隨著網際網路和移動終端技術高速發展,移動終端已經擁有了強大的處理能力,移動終端正在從簡單的通話工具變為一個綜合信息處理平臺,這也給移動終端增加了更加寬廣的發展空間。
移動終端是指可以在移動中使用的計算機設備,廣義的講包括手機、筆記本、平板電腦等設備。移動終端作為簡單通信設備伴隨移動通信發展已有幾十年的歷史。自2007年開始,智能化引發了移動終端基因突變,從根本上改變了終端作為行動網路末梢的傳統定位。移動智能終端引發的顛覆性變革揭開了移動網際網路產業發展的序幕,開啟了一個新的技術產業周期。隨著移動智能終端的持續發展,其影響力將比肩收音機、電視和網際網路(pc),成為人類歷史上第4個滲透廣泛、普及迅速、影響巨大、深入至人類社會生活方方面面的終端產品。
今天的移動終端不僅可以通話、拍照、聽音樂、玩遊戲,而且可以實現包括定位、信息處理、條碼掃描、ic卡掃描等豐富的功能,移動終端已經深深地融入我們的經濟和社會生活中,正在極大改變人們的日常生活方式。
另一方面,因為人們的生活水平和消費水平的提高,越來越多的人選擇外出旅行來從忙碌的工作中得到休息、開拓自己的視野。在旅行的過程中,平板、手機等移動終端設備因其攜帶方便、價格相對低廉、操作簡單等特點被廣泛地用來在旅旅行過程中拍攝圖片。移動終端容量和電量的擴大使得終端在旅行過程中拍攝的圖片數量越來越龐大,這就使得在旅行結束管理這些圖片花費的時間開銷更大。考慮到移動終端本身往往具有一定的計算能力,使得本地智能化自動化管理旅行圖片成為了可能。
目前有許多針對移動終端圖片管理的方法已經取得了一些成果。中國專利《照片管理方法和裝置及移動終端》,申請號:cn201510346832.3,授權公告號cn104933146a公開了一種用於移動終端的照片管理方法。該方法包括:根據預設的標籤,獲取拍攝的照片對應的標籤,為所述照片添加標籤,按照所述標籤存儲所述照片。該方法的目的是可以按照照片的標籤對照片進行管理,存儲方式比較豐富,而且在這樣的存儲方式下,查找照片時可以根據標籤來實現照片的快速、準確查找,照片查找效率非常高。
然而上述圖片管理方法並沒有引入圖片位置和拍攝時間等信息,將圖片的空間和時間關聯起來進行自動化管理。但是對於目前生活水平日益提高的現狀,越來越多的人經常選擇出去旅行,而這些隱藏信息往往具有特別重要的意義。
技術實現要素:
發明目的:本發明針對移動終端的圖片管理,結合圖片拍攝位置信息和時間信息,提出一種時空關聯的個性化定製的圖片管理方法,方便人們在查看圖片的同時能方便地查看圖片的拍攝時間和位置等信息。
本發明針對現有技術的不足,提供一種支持移動終端的時間空間關聯的個性化定製圖片管理方法。
為了解決上述技術問題,本發明公開了支持移動終端的時間空間關聯的個性化定製圖片管理方法,包括以下步驟:
步驟1,在旅行開始之前,用戶點擊移動終端,確定旅行的開始時間,在完成旅行時確定旅行結束時間;
步驟2,遍歷移動終端上的本地相冊文件夾,根據步驟1中的時間範圍找出拍攝時間在此期間的圖片;
步驟3,對步驟2中的所有圖片計算其geohash編碼值並保存到本地緩存;
步驟4,根據所有圖片的geohash編碼值確定地圖初始縮放比例,初始化地圖以及圖片簇在地圖上的標記,用戶點擊圖片簇可以查看圖片簇中的圖片;
步驟5,根據用戶對地圖的縮放手勢確定每次操作完成時geohash編碼前綴長度;
步驟6,將當前圖片簇的geohash編碼前綴長度與步驟5新生成的geohash編碼前綴長度進行對比,如果前者更大,則需要對某些圖片簇進行聚集,如果後者更大,則需要遍歷每個圖片簇並對某些圖片簇進行分裂;如果兩者長度相等,則圖片簇不發生變化。對於新生成的圖片簇,需要更新其顯示的時間信息;
步驟7,將用戶操作結果於移動終端的地圖界面進行更新顯示結果,包括圖片簇在地圖上的標記、圖片簇時間信息顯示和圖片簇間「箭頭」標記的添加,用戶點擊圖片簇可以查看圖片簇中的圖片。
本發明步驟2中,用戶在開始旅行時,需要在移動終端上確定旅行開始時間,記為time_start,同時在旅行結束時,也需要在移動終端上確定旅行結束時間,記為time_end。在旅行結束後,需要根據圖片拍攝時間提取出在旅行期間拍攝的圖片。遍歷移動終端上的本地文件夾,對每一個圖片文件,提取它的拍攝時間time_taken,如果滿足條件:time_start≤time_taken≤time_end,表示該圖片是此期間拍攝的,則將該圖片記錄下來。然後可以得到在旅行期間拍攝的圖片集合p={p1,p2,…,pn},其中n為在此期間拍攝的圖片的個數,n取值為自然數,用time_takent表示第t個圖片pt的拍攝時間,(1≤t≤n)。
本發明步驟3中,採用了base32編碼長度為9的geohash編碼,該編碼方式將二維的經緯度轉換成字符串,且使用0-9、b-z(去掉a,i,l,o)這32個字母進行base32編碼。當編碼長度為9時,理論上能夠達到最大定位精度在2米左右。對於一個geohash編碼,同樣可以解碼得到編碼前近似的經緯度。
本發明中,對於集合p={p1,p2,…,pn}中的每個圖片pt(1≤t≤n),可以提取其拍攝位置的經度lngt和緯度latt,計算出geohash編碼值geoht,並保存到移動終端的緩存中,可以直接訪問,避免重複計算。
本發明中,在移動終端的地圖上會顯示若干圖片簇,每個圖片簇是若干張圖片的集合。步驟4中,所有圖片簇的集合記為c={c1,c2,…,cm},定義集合c保存所有的圖片簇,圖片簇剛開始只有一個,即所有圖片保存在同一個圖片簇中,後來這個圖片簇會發生聚集或分裂,記圖片簇的個數為m,也即m最開始為1。c1表示第一個圖片簇,其中第i個圖片簇表示為其中表示第i個圖片簇ci中第j個圖片,1≤j≤ni,ni表示圖片簇ci中圖片個數,1≤i≤m,m取值為自然數,且ci具有四個屬性值{geoleni,timei,geoh_commoni,time_firsti},其中,geoleni表示ci的geohash編碼前綴長度、timei表示ci顯示的時間信息、geoh_commoni表示ci的geohash編碼、time_firsti表示ci中最早拍攝的圖片的時間;
本發明步驟4中,在用戶查看該旅行相冊時,需要首先對移動終端的地圖進行初始化。此時所有圖片保存在同一個圖片簇中,即c={c1},c1={p1,p2,...,pn},且
其中geolen1表示c1的geohash編碼前綴長度,geoh_common1表示c1的geohash編碼,time_first1表示c1的最早拍攝的圖片的時間。
本發明步驟4中,需要計算出圖片簇c1對應的需要顯示的時間信息time1。如果c1僅有一張圖片或者多張圖片但是拍攝時間完全相同,則將time1根據圖片的拍攝時間設置成格式為「xx時xx分xx秒」。否則,根據c1中所有圖片最具體的相同拍攝時間(最具體的相同拍攝時間指同一個圖片簇中所有圖片最細粒度的相同拍攝時間,通過移動終端獲取)分6種不同情況:
(1)最具體的相同拍攝時間為「年」,則將time1設置成格式為「xx年」,
(2)最具體的相同拍攝時間為「月」,則將time1設置成格式為「xx年xx月」,
(3)最具體的相同拍攝時間為「日」,則將time1設置成格式為「xx年xx月xx日」,
(4)最具體的相同拍攝時間為「時」,則將time1設置成格式為「xx月xx日xx時」,
(5)最具體的相同拍攝時間為「分」,則將time1設置成格式為「xx日xx時xx分」,
(6)其它,則將time1設置為空字符串。
本發明步驟4中,設定移動終端地圖放大級別為1到k共k種(考慮常見地圖放大級別都大於10,故設置k≥10),且數字增加代表地圖放大。初始化時需要在地圖上標記圖片簇c1,並在圖片簇上方顯示c1的時間屬性time1。初始化時,將地圖放大級別設置為1,並在地圖上geohash編碼為geoh_common1處標記圖片簇c1,同時在標記上方顯示c1的時間屬性time1。
本發明步驟5中,在初始化之後,由於用戶可能會對移動終端的地圖進行放大或縮小操作,這就使得原始圖片簇會進行分裂或聚集。記用戶操作結束後地圖放大級別為d,1≤d≤k,則通過如下公式計算出新的圖片簇的geohash編碼前綴長度geolen_new:
其中k為地圖放大級別。
本發明步驟6中,當用戶對地圖的縮放操作結束時,圖片簇集合為c={c1,c2,...,cm},此時將集合c中每一個圖片簇的geohash編碼前綴長度與步驟5得到的geohash編碼前綴長度進行對比,需要先根據geolen_new與geolen的大小,對圖片簇進行聚集或分裂,存在三種情況:
(1)geolen_new小於geolen,此時對任意圖片簇ci(1≤i≤m),將geoh_commoni具有geolen_new長度相同前綴的圖片簇合併成一個新圖片簇,並刪除掉合併之前的若干個圖片簇,且更新新圖片簇的geohash編碼前綴長度geolen為geolen_new,更新新圖片簇geohash編碼geoh_common為所有圖片geohash編碼的最長公共前綴;
(2)geolen_new大於geolen,此時對每個圖片簇對ci中的任意圖片的geohash編碼值將具有相同geolen_new長度前綴的的圖片保存到同一個圖片簇中,如果形成多個圖片簇,原圖片簇分裂成多個新的圖片簇,最後對每個圖片簇,更新新圖片簇的geohash編碼前綴長度geolen為geolen_new,更新新圖片簇geohash編碼geoh_connon為所有圖片geohash編碼的最長公共前綴;
(3)geolen_new等於geolen,任意圖片簇ci(1≤i≤m)不發生任何變化。
本發明步驟6中,當由於用戶操作產生了新的圖片簇時,需要更新每個新圖片簇的顯示的時間信息time。如果圖片簇僅有一張圖片或者多張圖片但是拍攝時間完全相同,則將time根據圖片的拍攝時間設置成格式為「xx時xx分xx秒」。否則,根據圖片簇中所有圖片最具體的相同拍攝時間分6種不同情況:
(1)最具體的相同拍攝時間為「年」,則將time設置成格式為「xx年」,
(2)最具體的相同拍攝時間為「月」,則將time設置成格式為「xx年xx月」,
(3)最具體的相同拍攝時間為「日」,則將time設置成格式為「xx年xx月xx日」,
(4)最具體的相同拍攝時間為「時」,則將time設置成格式為「xx月xx日xx時」,
(5)最具體的相同拍攝時間為「分」,則將time設置成格式為「xx日xx時xx分」,
(6)其它,則將time設置為空字符串。
本發明步驟7中,當用戶對地圖縮放操作結束,需要在終端的地圖上對圖片簇進行顯示。將地圖設置為放大級別d,並在地圖上標記所有圖片簇ci(1≤i≤m)標記位置的geohash編碼為geoh_commoni,同時在標記上方顯示ci的時間屬性timei。
本發明中步驟7中,對於不同圖片簇,每個圖片簇代表了在不同地點拍攝的圖片,因此圖片簇之間存在時間上的先後關係,據此本發明在圖片簇之間添加「箭頭」標記。此時所有圖片簇為c={c1,c2,…,cm},找出任意圖片簇中最早拍攝的圖片的時間time_firsti(1≤i≤m),計算公式為:
其中表示簇ci中第j張圖片的拍攝時間,ni為簇ci中圖片的個數,然後按照圖片簇ci中最早拍攝的圖片的時間time_firsti從小到大對圖片簇排序,根據排好的順序在地圖上對應的圖片簇之間添加從前者指向後者的「箭頭」標記。
本發明中,點擊圖片簇可以查看圖片簇中記錄的圖片。同時,用戶可以個性化定製是否需要顯示圖片簇的時間信息和「箭頭」標記。
本發明中的思想為:首先根據用戶確定的旅行開始時間和結束時間在移動終端的文件管理器中找出在旅行期間拍攝的圖片;然後對每個圖片計算出geohash編碼值保存到緩存中避免重複計算;接著初始化移動終端地圖及圖片簇的顯示;最後根據用戶對移動終端地圖的縮放操作確定當前geohash編碼前綴長度,對圖片簇進行分裂或聚集,再計算新圖片簇標記上方顯示的時間信息,並添加代表圖片簇先後順序的「箭頭」標記。點擊圖片簇可以查看圖片簇中的圖片。
與現有技術相比,本發明的有益效果體現在:
(1)引入圖片位置和拍攝時間等信息,將圖片的空間和時間關聯起來進行自動化管理,方便人們在查看圖片的同時能方便的查看圖片的拍攝時間和位置等信息。
(2)包含了圖片之間拍攝的時間先後關係,能夠幫助用戶回憶遊旅行遊玩的經歷。
(3)圖片簇的時間信息的顯示會儘量保證最大的粒度,用戶能夠查看更具體的時間信息。
(4)用戶可以個性化定製是否顯示圖片簇的時間信息和「箭頭」標記。
附圖說明
下面結合附圖和具體實施方式對本發明做更進一步的具體說明,本發明的上述或其他方面的優點將會變得更加清楚。
圖1是本發明步驟流程圖。
圖2是本發明具體實施流程圖。
具體實施方式
下面結合附圖及實施例對本發明做進一步說明。
本發明公開了支持移動終端的時間空間關聯的個性化定製圖片管理方法,該方法步驟流程圖如圖1和圖2所示,包括以下步驟:
步驟1,在旅行開始之前,用戶點擊移動終端,確定旅行的開始時間,在完成旅行時確定旅行結束時間;
首先,用戶在移動在終端確定開始時間記為time_start,結束時間記為time_end。
步驟2,遍歷移動終端上的本地相冊文件夾,根據步驟1中的時間範圍找出拍攝時間在此期間的圖片;
然後,系統遍歷移動終端上的本地文件夾,對每一個圖片文件,提取它的拍攝時間time_taken,如果滿足條件:time_start≤time_taken≤time_end,表示該圖片是此期間拍攝的圖片,並將該圖片記錄下來。可以得到在旅行期間拍攝的圖片集合p={p1,p2,…,pn},其中n為在此期間拍攝的圖片的個數,time_takent表示pt的拍攝時間(1≤t≤n)。
步驟3,對步驟2中的所有圖片計算其geohash編碼值並保存到本地緩存;
其次,對集合p={p1,p2,…,pn}中的每個圖片pt(1≤i≤n),可以提取其拍攝位置的經度lngt和緯度latt,計算出geohash編碼值geoht,並保存到移動終端的緩存中,可以直接訪問,避免重複計算。
步驟4,根據所有圖片的geohash編碼值確定地圖初始縮放比例,初始化地圖以及圖片簇在地圖上的標記,用戶點擊圖片簇可以查看圖片簇中的圖片;
接著,初始化移動終端的地圖界面。此時所有圖片保存在同一個圖片簇中,即c={c1},c1={p1,p2,...,pn},且
其中geolen1表示c1的geohash編碼前綴長度,geoh_common1表示c1的geohash編碼,time_first1表示c1的最早拍攝的圖片的時間。
同時,需要計算出圖片簇c1對應的需要顯示的時間信息time1。如果c1僅有一張圖片或者多張圖片但是拍攝時間完全相同,則將time1根據圖片的拍攝時間設置成格式為「xx時xx分xx秒」。否則,根據c1中所有圖片最具體的相同拍攝時間分6種不同情況:
(1)最具體的相同拍攝時間為「年」,則將time1設置成格式為「xx年」,
(2)最具體的相同拍攝時間為「月」,則將time1設置成格式為「xx年xx月」,
(3)最具體的相同拍攝時間為「日」,則將time1設置成格式為「xx年xx月xx日」,
(4)最具體的相同拍攝時間為「時」,則將time1設置成格式為「xx月xx日xx時」,
(5)最具體的相同拍攝時間為「分」,則將time1設置成格式為「xx日xx時xx分」,
(6)其它,則將time1設置為空字符串。
下面你就可以初始化移動終端的地圖界面:將地圖放大級別設置為1,並在地圖上geohash編碼為geoh_common1處標記圖片簇c1,同時在標記上方顯示c1的時間屬性time1。
步驟5,根據用戶對地圖的縮放手勢確定每次操作完成時geohash編碼前綴長度;
最後,移動終端的地圖界面會不停地對用戶的手勢操作進行響應,因此,步驟5-7是一個循環的過程,直至用戶退出移動終端的地圖界面循環結束。
本發明步驟5中,記用戶操作結束後地圖放大級別為d(1≤d≤k),則計算出新的圖片簇的geohash編碼前綴長度geolen_new,計算公式如下:
其中k為地圖放大級別。
步驟6,將當前圖片簇的geohash編碼前綴長度與步驟5新生成的geohash編碼前綴長度進行對比,如果前者更大,則需要對某些圖片簇進行聚集,如果後者更大,則需要遍歷每個圖片簇並對某些圖片簇進行分裂,否則圖片簇不發生變化。對於新生成的圖片簇,需要更新其顯示的時間信息;
本發明步驟6中,首先此時需要先根據geolen_new與geolen的大小,對圖片簇進行聚集或分裂,圖片簇集合為c={c1,c2,…,cm}存在三種情況:
(1)geolen_new小於geolen,此時對任意圖片簇ci(1≤i≤m),將geoh_commoni具有geolen_new長度相同前綴的圖片簇合併成一個新圖片簇,並刪除掉合併之前的若干個圖片簇,且更新新圖片簇的geohash編碼前綴長度geolen為geolen_new,更新新圖片簇geohash編碼geoh_common為所有圖片geohash編碼的最長公共前綴;
(2)geolen_new大於geolen,此時對每個圖片簇對ci中的任意圖片的geohash編碼值將具有相同geolen_new長度前綴的的圖片保存到同一個圖片簇中,如果形成多個圖片簇,原圖片簇分裂成多個新的圖片簇,最後對每個圖片簇,更新新圖片簇的geohash編碼前綴長度geolen為geolen_new,更新新圖片簇geohash編碼geoh_common為所有圖片geohash編碼的最長公共前綴;
(3)geolen_new等於geolen,任意圖片簇ci(1≤i≤m)不發生任何變化。
本發明步驟6中,接著需要更新每個新圖片簇的時間屬性time。如果圖片簇僅有一張圖片或者多張圖片但是拍攝時間完全相同,則將time根據圖片的拍攝時間設置成格式為「xx時xx分xx秒」。否則,根據圖片簇中所有圖片最具體的相同拍攝時間分6種不同情況:
(1)最具體的相同拍攝時間為「年」,則將time設置成格式為「xx年」,
(2)最具體的相同拍攝時間為「月」,則將time設置成格式為「xx年xx月」,
(3)最具體的相同拍攝時間為「日」,則將time設置成格式為「xx年xx月xx日」,
(4)最具體的相同拍攝時間為「時」,則將time設置成格式為「xx月xx日xx時」,
(5)最具體的相同拍攝時間為「分」,則將time設置成格式為「xx日xx時xx分」,
(6)其它,則將time設置為空字符串。
步驟7,將用戶操作結果於移動終端的地圖界面進行更新顯示,包括圖片簇在地圖上的標記、圖片簇時間信息顯示和圖片簇間「箭頭」標記的添加,用戶點擊圖片簇可以查看圖片簇中的圖片。
本發明步驟7中,當用戶對地圖縮放操作結束,需要在終端的地圖上對圖片簇進行顯示。將地圖設置為放大級別j,並在地圖上標記所有圖片簇ci(1≤i≤m)標記位置的geohash編碼為geoh_commoni,同時在標記上方顯示ci的時間屬性timei。另外,對於不同圖片簇,每個圖片簇代表了在不同地點拍攝的圖片,因此圖片簇之間存在時間上的先後關係,據此本發明在兩者之間添加「箭頭」標記。此時所有圖片簇為c={c1,c2,…,cm},找出任意圖片簇中最早拍攝的圖片的時間time_firsti(1≤i≤m),計算公式為:
其中表示簇ci中第j張圖片的拍攝時間,ni為簇ci中圖片個數,然後將time_firsti(1≤i≤m)從小到大排序,在其代表的圖片簇之間添加從前者直向後者的「箭頭」標記。
實施例
本實施例使用了某旅行者於2016年12月28日去中山陵遊玩並使用智慧型手機沿途隨機拍攝若干張圖片的數據集進行實驗。
旅行前某旅行者確定旅行開始時間為2016年12月28日9時12分13秒(unix時間戳為1482887533秒),旅行結束時某旅行者確定旅行結束時間為2016年12月28日17時16分11秒(unix時間戳為1482916571秒)。
旅行結束後,某旅行者想查看本次旅行拍攝的圖片,他打開手機相冊,選中本次旅行,即將跳轉到地圖界面。首先,手機系統遍曆本地相冊文件夾,尋找拍攝時間t(unix時間戳表示)滿足1482887533≤t≤1482916571的圖片。
然後系統對上面的圖片提取拍攝地點的經緯度,計算每個圖片的geohash編碼並保存到手機緩存中,得到圖片及對應的geohash編碼等信息,如表1所示。
表1旅行期間拍攝圖片的各項信息
接著,初始化智慧型手機地圖界面:地圖放大等級有1-16共16個等級(數字越大表示地圖放大),即k=16,此時c={c1},c1={p1,p2,…,p20},且由公式(1)得到
再計算出time1為「2016年12月28日」。所以系統設置地圖放大等級為1,在地圖geohash編碼為「wtsw2」處(即經緯度分別為118.82814646、32.03615427處)標記c1,同時在標記上方註明時間「2016年12月28日」。
最後,移動終端的地圖界面會不停地對用戶的手勢操作進行響應。比如用戶放大地圖,得到地圖的放大級別為11時,由公式(2)計算出此時geohash編碼前綴長度為6,此時c={c1}將分裂成三個新的圖片簇,分別為c1={p1,p2,…,p5},c2={p6,p7,…,p17},c3={p18,p19,p20}。此時,c={c1,c2,c3},更新c1,c2,c3的geohash編碼前綴長度為6,更新c1,c2,c3的geohash編碼分別為「wtsw26」,「wtsw2s」和「wtsw2t」。同時,計算出c1,c2,c3的時間屬性time分別為「12月28日10時」、「2016年12月28日」和「12月28日15時」。
此時移動終端的地圖將設置放大級別為11,在地圖上geohash編碼為「wtsw26」處(即經緯度分別為118.83913279、32.04714060處)標記c1,在地圖上geohash編碼為「wtsw2s」處(即經緯度分別為118.85011911、32.05812693處)標記c2,在地圖上geohash編碼為「wtsw2t」處(即經緯度分別為118.85011911、32.06362009處)標記c3,在c1,c2,c3的標記上方分別註明時間「12月28日10時」、「2016年12月28日」和「12月28日15時」。接著分別找出c1,c2,c3中最早拍攝的圖片的時間,用公式(3)計算得到time_first1,time_first2,time_first3分別為1482891165、1482895822、1482909225,因此分別添加從c1指向c2和從c2指向c3的「箭頭」標記。
移動終端的地圖界面會循環地對用戶的手勢操作進行響應,直至用戶退出地圖相冊。
本發明提供了支持移動終端的時間空間關聯的個性化定製圖片管理方法,具體實現該技術方案的方法和途徑很多,以上所述僅是本發明的優選實施方式,應當指出,對於本技術領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發明的保護範圍。本實施例中未明確的各組成部分均可用現有技術加以實現。