Re: [问题] IPHONE7 相机胶卷排序乱掉

楼主: stu85010 (黑白夜冲爽哥)   2016-10-01 12:53:18
不好意思,我再来占一下版面
我不死心继续研究了到底是什么东西在作怪,
最后发现成功把顺序修正了!!! 简单来说是整个流程手机不要进入锁定模式
参考 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⊙
作者: lkj12tw   2016-10-01 13:00:00
推研究精神
作者: bfjky (乡民der温暖)   2016-10-01 13:19:00
作者: saypiecex (陈保德)   2016-10-01 13:45:00
所以一般使用者无法用囉?
楼主: stu85010 (黑白夜冲爽哥)   2016-10-01 14:45:00
一般使用者可以使用喔
作者: kikicoco123 (full house)   2016-10-01 15:54:00
请问第三步骤要怎么跟新数据库?
作者: salasa (MARS)   2016-10-01 16:00:00
第三步骤不懂+1
楼主: stu85010 (黑白夜冲爽哥)   2016-10-01 16:15:00
我晚点有时间再打中文的步骤 有兴趣可先参考网址的英文说明
作者: sammy60206 (三米)   2016-10-01 16:18:00
先感谢分享了
作者: hhhutwtw (0933)   2016-10-01 16:46:00
推研究精神
作者: kikicoco123 (full house)   2016-10-01 18:04:00
成功了,感谢!我是把这三个新的档案在copy回手机取代旧的,不然试都失败. http://imgur.com/a/3skX7
楼主: stu85010 (黑白夜冲爽哥)   2016-10-01 18:21:00
赞!所以真的要顺便一起拿掉Photos.sqlite-wal与Photos.sqlite-shm才会成功

Links booklink

Contact Us: admin [ a t ] ucptt.com