【iOS】无损备份相机胶卷、手动调整照片顺序及iOS照片处理机制浅谈

  • z
    zhaoyuping
    首先声明,本文适用于ios7.x、8.x、9.x,均无需越狱。

    苹果ios系统对相机胶卷的严格限制想必大家都有所体会。一般情况下,你是无法将自己的照片批量存入相机胶卷的。苹果官方的建议是使用PC端的iTunes创建照片图库进行管理和同步。但是照片图库的缺点显而易见:手机端无法删除也不便管理。特别是当你换了新手机,需要将原有手机的相机胶卷完整复制到新手机的时候,这个问题就成了一个最大的障碍。除了使用itunes进行整机备份以外,几乎没有其他方法。但是itunes整机备份会连同旧手机的垃圾也一同备份到新手机,并且不能自由选择备份内容。而越狱用户贸然备份还可能引起各种问题。

    在之前我都是使用各种第三方助手助手程序,通过在手机上安装一个中转app,把照片批量转存进新手机的相机胶卷。但是这个方法有一个非常大的缺点,就是转存过程中,照片的EXIF信息会全部清除,文件创建和修改日期也被改变。这直接导致下一次恢复照片时照片顺序错乱。同时,10GB左右的照片需要转存长达1小时左右,且无法操作手机,非常不便。

    无损备份及恢复相机胶卷的办法

    1、PC端下载并打开iFunbox,连接需要备份照片的手机

    2、进入以下路径:\\var\mobile\Media\DCIM\(未越狱用户的路径是用户文件系统\DCIM),将里面所有1xxAPPLE文件夹备份出来。

    3、连接新手机,进入同样路径,将刚刚备份的文件夹放入同样位置

    4、进入与DCIM同级的PhotoData文件夹,删除以Photos.sqlite开头的三个文件

    5、断开连接,重启手机

    6、进入照片app,你会看到里面一张照片都没有。不要着急,稍等大概十几秒,会显示“正在恢复...”,照片也在不断增加。待索引和缩略图重建完成后,大功告成!你会发现所有照片的EXIF信息都被完整保留。

    不过,在ios9系统中,恢复后的照片容易出现顺序错乱的问题(即使你之前从来没有使用过助手类工具备份过)。这是因为ios9中引入了新的排序机制,将文件的修改时间也加入到排序中来,且优先级比文件名还要高。而一些自第三方app中转存入相机胶卷的图片往往没有EXIF信息,则会按照文件创建和修改时间排序。这在正常使用中不会看出问题,但当你恢复照片后,文件的创建和修改时间被改变,变成恢复备份的时间,这部分没有EXIF信息的图片就会排列到相机胶卷最末尾。想解决这个问题,只好继续向下看了。

    高级教程

    以上步骤,只提供了一个转移相机胶卷的简单办法,但是对于iOS上相册的运作机制并没有接触。如果你的照片的EXIF信息已经丢失,或照片顺序一团糟,再或者你想完全掌控ios的相机胶卷,任意放入自己喜欢的照片,那么,就必须对ios的相册机制进行更深入的了解了。


    一、照片排序依据

    随着ios系统版本的升级,以文件名称作为排序标准的权重在逐渐降低。在ios9中,文件名甚至成了最末尾的排序规则。根据目前的测试,排序优先级大概是这样的:照片EXIF(MOV为视频内嵌时间)> 文件创建时间 > 文件修改时间 > 文件名序列。所以,如果希望恢复照片的正确顺序,为照片重建EXIF信息是最佳办法。大致过程为:
    1、使用ACDSee9.0,打开存储照片的文件夹,以你需要的顺序排列文件夹内的照片,之后通过软件进行批量重命名(如果你的文件名序列正确则可以跳过此步);

    2、使用ACDSee9.0批量修改照片的标签信息,将存在EXIF信息的照片的EXIF拍摄时间写入到文件的创建时间和修改时间(如果EXIF全丢失这步就不用做了);

    2、使用BulkFileChanger载入所有照片,以文件名升序排序,之后选择那些没有EXIF信息的照片(这部分照片的创建修改时间不正确),批量修改照片的创建时间和修改时间,使每张照片均间隔一定的时间且位于丢失EXIF信息照片的大致拍摄时间范围内。

    3、使用ACDSee9.0批量修改照片的标签信息,将缺失EXIF信息的照片的创建时间或修改时间写入到该文件的EXIF信息内;

    4、回到BulkFileChanger,将创建时间复制到修改时间(因写入EXIF后照片修改时间已被改变)

    使用此办法,照片顺序可以恢复正常。但对于丢失全部照片EXIF信息的情况,可能会发现部分视频没有在正确的位置上。这是因为MOV文件内置一个时间,这个时间不会因为任何备份方式丢失。而以上部分照片的EXIF时间并非真实时间,而是一个序列时间。如果想将视频恢复到正确位置,只能根据视频拍摄时间来修改前后照片的EXIF时间。


    二、文件名和文件夹生成依据

    虽然相机胶卷内所有照片全部在一起,并没有文件夹,但在ios系统内实际划分出多个文件夹对所有照片进行分别保存。保存规律为自100APPLE文件夹开始,每1000张照片创建一个新文件夹。文件夹名称序列为100APPLE,101APPLE,102APPLE,以此类推。IMG_0152.jpg会存放在100APPLE内,IMG_2850.jpg则会存放于102APPLE内。


    三、照片数据库和照片序号

    ios文件系统内photodata目录下photos.sqlite、photos.sqlite-shm和photos.sqlite-wal三个文件是数据库文件,将其删除后,ios中的所有照片会暂时消失。一段时间或重启之后,ios系统会根据上述规则重建照片索引(此过程必须断开usb连接)。稍候照片即可恢复正常。当需要清空手机内照片、恢复照片备份前,删除这三个文件是必须的(事实上删除第一个就可以达到效果)。

    但此时工作并没有全部结束。当你继续拍摄新照片时,你会发现照片序号不一定跟随在你恢复备份的照片之后。这是因为原来的照片文件序号信息依然储存在ios文件系统内PhotoData\MISC\DCIM_APPLE.plist文件中。使用plistEditor打开该plist文件,将其中文件序号和存储文件夹名字段依据上述规则修改为你所想要的即可。

    至此,我们已经可以完全掌控ios中的照片了。

    文章终于写完,不知道各位看吐了没有?
  • g
    gaoxing
    赞美
  • t
    tantalus.lee
    每次被迫这么折腾的时候我都想骂苹果的娘。 iOS fly ~
  • 阿尔法罗米欧
    很技巧马克扎克伯格
  • l
    leonli_czc
    128G,不折腾 Palm fly~
  • a
    asiaeurope
    mark 很有用
  • l
    lhofei
    只有照片了,没有文件夹能行吗?
  • 浮华的寓意
    内容学习了
  • m
    mfelidae
    感谢
    顺便问下iOS是基于什么建立新文件夹的?
  • z
    zhaoyuping
    手动新建文件夹就可以,具体见楼下 iOS fly ~
  • z
    zhaoyuping
    从100APPLE开始,然后101APPLE类推。照片四位数编号,0xxx放在100APPLE里,1xxx放到101APPLE里,等等。你可以自己依据这个规则自己修改。另外照片排序是根据exif记录的拍摄日期,没有的话根据文件创建日期,其次是文件名。知道这个规律,可以避免文件顺序错乱 iOS fly ~
  • H
    HAL
    技术帖马克
  • E
    ETvic
    airdrop不行么?
    分享这一刻的全部照片 iOS fly ~
  • d
    deviny
    Mark为这事头疼很多次了HiPDA怪兽版
  • 沉默肥牛
    mark一下。。这个比较牛B
  • z
    zhaoyuping
    我这个是在换设备或者干净刷机的时候用的。当你的照片有十几G的时候,我想你也不会想用AirDrop吧… iOS fly ~
  • i
    immi
    非常好,要记录一下 iOS fly ~
  • g
    gzhoochgz
    马克一下
  • o
    otcotc2
    呃,现在已经在手机图库的能按这个改去胶卷吗?
  • E
    ETvic
    回复18#zhaoyuping
    受教,mark iOS fly ~
  • t
    tantalus.lee
    多了会假死。
  • f
    fenixnt
    这个必须 iOS fly ~
  • m
    mfelidae
    感谢!
  • d
    danety
    多谢,学习了 iOS fly ~
  • l
    lawzhang
    我有十来个这样的文件夹了 有办法合并吗
  • p
    pnfmail
    Content marker 待换手机用
  • z
    zhaoyuping
    可以。只要你文件名和文件夹符合规则,可以支持jpg和png格式,其他没测试。另外,建议只把带有exif信息的照片放进相机胶卷。如果exif信息已经丢失,要么想办法用软件批量写入拍摄日期,或者批量写入文件创建时间,否则ios在建立索引进行排序的时候,会自动将设备当前时间写入到照片的文件创建日期里,然后追加在相机胶卷的最末尾。从而导致顺序混乱。
  • k
    kaola7180
    Content marker 待换手机用
  • 什锦炒饭
    太实用了,感谢。马克一下。 iOS papapa~
  • 江南大稻
    正及时!刚换新手机正准备导照片,感谢!
  • w
    wjswlf
    照片就十几g我终于明白你们的手机容量用哪去了,像我这种16g的屌丝6都是精选照片存在百度云的,还有一部分放在iCloud, iOS fly ~
  • t
    thinkpadnb
    丢失过资料,这很有用。 iOS fly ~
  • c
    cooliscool
    内容mark
  • l
    likewe
    手机里的照片怎样全拷出来,再全删掉?
  • x
    xinfeibb
    这个可以先收着 iOS fly ~
  • s
    stian
    mark 很有用
  • s
    shijinwei
    make。 iOS fly ~
  • t
    tanshisher
    全部传百度云了
    看不懂lz iOS fly ~
  • y
    ynr
    收藏功能容易出错,人工mark
  • d
    dserl
    先马克咯。。
  • N
    Nomex
    马克 iOS fly ~
  • z
    zeroxia
    重建照片信息只需要删除一个文件就够了吗?我看国外论坛上说的,需要删好几个文件。
    Photos.sqlite
  • c
    chi508
    内容这个方法赞啊
  • f
    fredzhu
    我好奇的是为什么新手机还要导入原始照片?嫌手机容量太大? iOS fly ~
  • z
    zhaoyuping
    实测一个就可以。那几个应该会自动更新 iOS fly ~
  • s
    shaoshij
    这个不错
    iOS fly ~
  • w
    whhaaaaattt
    mark~