IPHONE7 相機膠捲排序亂掉 - iOS

By Leila
at 2016-10-01T12:53
at 2016-10-01T12:53
Table of Contents
不好意思,我再來佔一下版面
我不死心繼續研究了到底是什麼東西在作怪,
最後發現成功把順序修正了!!! 簡單來說是整個流程手機不要進入鎖定模式
參考 https://www.reddit.com/r/jailbreak/comments/3v2zjs
步驟修正為:
1. 關閉相機、照片APP,手機保持螢幕開啟、不要進入待機、鎖定模式
2. 透過iTools把手機內的Photos.sqlite拿出來,
3. 透過SqliteBrowser(DB Browser for sqlite)更新Photos.sqlite的資料庫
4. 將剛剛修改好的Photos.sqlite丟回手機
5. 開啟照片app,他不會自動重整資料庫,順序馬達上就是對的了!
整個步驟的流程其實不到一分鐘即可完成(如果iTools與SqliteBrowser已有)
一般使用者可END
接下來詳述運作原理與之前的失敗原因,有誤請不吝指正:
1. 排序機制
透過查看Photos.sqlite的GenericAsset表格中,詳列了每張照片的
索引 Z_PK
加入時間 ZADDEDDATE (應該是相片加入資料庫的時間)
創造時間 ZDATECREATE (拍攝照片的時間)
修改時間 ZMODIFICATIONDATE
存放資料夾 ZDIRECTORY
檔案名稱 ZFILENAME
透過觀察ZADDEDDATE與ZDATECREATE的數值、排序,以及索引值與檔案名稱的變化,
可以發現相機膠卷(Camera Roll)的相片順序與ZADDEDDATE的排序相同
理想上,AddedDate會是你拍攝、相片加入相機膠卷的那一刻,
但由於一些同步的機制,在備份還原後(或資料庫重建)的手機上,
AddedDate會跑到還原、或重建資料庫的那個時間點附近,
但DateCreate仍然是你拍攝的時間無誤
由於iOS資料庫重建、歸檔機制不明,
所以我們目前看到的現象是AddedDate與實際DateCreate的順序對不上的問題,
這個實在無解,這要設計者才能解釋,
所以我們一般使用者只能利用改寫資料庫的方式修正這個問題
2. 失敗的原因
iOS 10在相片功能中加入一個"人物"的功能,他會在手機鎖定(螢幕關閉)的狀態
掃描相片資料庫中的所有相片、並將這些人物的資訊寫入相片資料庫中
這也呼應到我上一篇發現我在操作過程中,明明相片APP都關了,
Photos.sqlite這個資料庫卻自己長大的問題
所以看起來是在背景的人物掃描功能,使得我們修改順序後的資料庫起不了作用
因此關鍵是在整個過程中手機螢幕保持開啟
另外我還在2.3.4.步驟順便把Photos.sqlite-wal一起拿掉,或許也有關係
總而言之,解決一個問題覺得舒坦⊙o⊙
--
我不死心繼續研究了到底是什麼東西在作怪,
最後發現成功把順序修正了!!! 簡單來說是整個流程手機不要進入鎖定模式
參考 https://www.reddit.com/r/jailbreak/comments/3v2zjs
步驟修正為:
1. 關閉相機、照片APP,手機保持螢幕開啟、不要進入待機、鎖定模式
2. 透過iTools把手機內的Photos.sqlite拿出來,
3. 透過SqliteBrowser(DB Browser for sqlite)更新Photos.sqlite的資料庫
4. 將剛剛修改好的Photos.sqlite丟回手機
5. 開啟照片app,他不會自動重整資料庫,順序馬達上就是對的了!
整個步驟的流程其實不到一分鐘即可完成(如果iTools與SqliteBrowser已有)
一般使用者可END
接下來詳述運作原理與之前的失敗原因,有誤請不吝指正:
1. 排序機制
透過查看Photos.sqlite的GenericAsset表格中,詳列了每張照片的
索引 Z_PK
加入時間 ZADDEDDATE (應該是相片加入資料庫的時間)
創造時間 ZDATECREATE (拍攝照片的時間)
修改時間 ZMODIFICATIONDATE
存放資料夾 ZDIRECTORY
檔案名稱 ZFILENAME
透過觀察ZADDEDDATE與ZDATECREATE的數值、排序,以及索引值與檔案名稱的變化,
可以發現相機膠卷(Camera Roll)的相片順序與ZADDEDDATE的排序相同
理想上,AddedDate會是你拍攝、相片加入相機膠卷的那一刻,
但由於一些同步的機制,在備份還原後(或資料庫重建)的手機上,
AddedDate會跑到還原、或重建資料庫的那個時間點附近,
但DateCreate仍然是你拍攝的時間無誤
由於iOS資料庫重建、歸檔機制不明,
所以我們目前看到的現象是AddedDate與實際DateCreate的順序對不上的問題,
這個實在無解,這要設計者才能解釋,
所以我們一般使用者只能利用改寫資料庫的方式修正這個問題
2. 失敗的原因
iOS 10在相片功能中加入一個"人物"的功能,他會在手機鎖定(螢幕關閉)的狀態
掃描相片資料庫中的所有相片、並將這些人物的資訊寫入相片資料庫中
這也呼應到我上一篇發現我在操作過程中,明明相片APP都關了,
Photos.sqlite這個資料庫卻自己長大的問題
所以看起來是在背景的人物掃描功能,使得我們修改順序後的資料庫起不了作用
因此關鍵是在整個過程中手機螢幕保持開啟
另外我還在2.3.4.步驟順便把Photos.sqlite-wal一起拿掉,或許也有關係
總而言之,解決一個問題覺得舒坦⊙o⊙
--
Tags:
iOS
All Comments

By Victoria
at 2016-10-02T00:20
at 2016-10-02T00:20

By Susan
at 2016-10-04T13:48
at 2016-10-04T13:48

By Kumar
at 2016-10-05T05:33
at 2016-10-05T05:33

By Kristin
at 2016-10-07T08:42
at 2016-10-07T08:42

By Susan
at 2016-10-08T18:17
at 2016-10-08T18:17

By Bennie
at 2016-10-10T08:01
at 2016-10-10T08:01

By Candice
at 2016-10-14T04:43
at 2016-10-14T04:43

By Ivy
at 2016-10-14T18:22
at 2016-10-14T18:22

By Rae
at 2016-10-17T04:13
at 2016-10-17T04:13

By Elvira
at 2016-10-18T13:55
at 2016-10-18T13:55

By Kristin
at 2016-10-22T14:23
at 2016-10-22T14:23

By Victoria
at 2016-10-25T00:37
at 2016-10-25T00:37
Related Posts
升級ios後強制輸入密碼

By Kama
at 2016-10-01T12:40
at 2016-10-01T12:40
iPhone 6 升完iOS10的使用經驗

By Olga
at 2016-10-01T12:09
at 2016-10-01T12:09
有人遇過電話打來卻滑不開嗎?

By Catherine
at 2016-10-01T11:53
at 2016-10-01T11:53
iphone6觸控失靈

By Madame
at 2016-10-01T11:25
at 2016-10-01T11:25
6S全台缺貨?以及出貨問題

By Todd Johnson
at 2016-10-01T11:22
at 2016-10-01T11:22