照片整理系列二 —— 照片整理及归档的辛酸历程

栏目: IT技术 · 发布时间: 4年前

内容简介:如今,随着拍摄设备的普及,我们随时随地都可以留下各种影像,随着时间的积累,会有越来越多的照片。极大方便的同时也带来了很多问题,例如:17年的时候,写了一个简单的照片整理和查看工具,对于平时的照片处理已经足够了。从19年初开始,规划将所有的历史照片整理归档,后续可以做一些电子相册等。为了前面的规划,首先第一步就是要整理和归档照片。基本上从19年上半年陆续启动了历史照片的整理工作,由于工作的原因,断断续续整理,目前基本上把从2008年到2020年初的大部分照片都已经整理完成了(视频尚未开始,因此这篇文章仅仅记录

背景

如今,随着拍摄设备的普及,我们随时随地都可以留下各种影像,随着时间的积累,会有越来越多的照片。极大方便的同时也带来了很多问题,例如:

  • 想找某一张很久前的照片没法找到

  • 看到一张照片以后想不到什么时候拍摄的

  • 想看一下某一年某一段时间的照片

17年的时候,写了一个简单的照片整理和查看工具,对于平时的照片处理已经足够了。从19年初开始,规划将所有的历史照片整理归档,后续可以做一些电子相册等。

为了前面的规划,首先第一步就是要整理和归档照片。基本上从19年上半年陆续启动了历史照片的整理工作,由于工作的原因,断断续续整理,目前基本上把从2008年到2020年初的大部分照片都已经整理完成了(视频尚未开始,因此这篇文章仅仅记录照片整理)。这里的照片包括:

  • 各种网盘、SD卡、硬盘、U盘、手机的历史数据

  • 人人网、QQ空间、微博等使用过的社交平台的照片

总体方案

  • 所有照片按照时间归档,照片文件名格式为: YYYY-MM-DD_hh-mm-ss.JPG ,例如 2013-03-09_11-51-23.JPG ,如果重名,就添加 -(1) 等标示

  • 所有照片按月分文件夹归档(后续会介绍为什么按照月份),例如:200801

  • 对于日期不明确的照片, 采用交叉验证的方式推测一个大概日期,然后以尽可能精确的时间命名

  • 数据归档整理结束以后,建立一个照片的数据库,对于照片的信息(备注、标签、特征等),都保存在数据库,仅仅在展示时使用真实数据,平时通过操作数据库管理照片信息

操作方法

怎么获取并按照指定格式归档照片

  • 自动归档

    使用之前自己专门开发的一款查看照片信息的工具,具体的使用方法可以参考文章 基于命令行的照片整理及查看工具 | 子勰的博客 通过命令行对于可以被按照拍摄时间成功重新命名的照片,在整理到目标目录后,原目录的照片会被删除;对于无法被重命名的照片,不做整理,同时保留该文件夹内上一张可以被重命名的照片做对比参照。

  • iOS Photos归档

    对于iPhone的截图、或者别人发送的不带位置信息的照片的截图,目前使用上面的工具或者一些其他 工具 都不能查看时间信息。但是如果导入到iMac的 Photos ,是可以识别的。因此可以先把所有照片导入 Photos,然后按照日期导出,这样也阔以拿到照片信息

  • 微博、人人网、QQ空间时间戳归档

    对于发布到社交平台的照片,绝大部分都会被压缩导致时间信息被抹去,对于这类照片,在下载时结合当时的动态内容,可以推断一个推测时间

  • 基于文件名分析归档

    对于部分拍摄设备或者软件,虽然因为压缩会丢失照片的附加信息,但是文件名有些时使用时间戳命名的,可以通过时间戳转换得到时间

  • 通过上下文分析

    对于以上方法都无法分析出的照片,只能通过历史记忆,然后寻找同时候照片,推断时间

对于不能自动归档的部分照片,怎么快速批量归档

  • 照片名称批量修改文件名

    对于上面提到的提供上下文分析或者Photos归档的照片,需要将他们按照指定格式重命名,可以使用下面的命令快速实现

    ➜  33  ls
      IMG_3456.jpg IMG_3457.jpg IMG_3459.jpg IMG_3460.jpg IMG_3461.jpg IMG_3463.jpg IMG_3464.jpg IMG_3465.jpg rename.sh
      ➜  33  cat rename.sh
      #/bin/bash
      cd $1
      pwd
      i=1; for x in *.JPG ; do mv $x "$2-$3-$4-00-00-00-($i).JPG"; let i=i+1; done
      i=1; for x in *.png ; do mv $x "$2-$3-$4-00-00-00-($i).PNG"; let i=i+1; done
      i=1; for x in *.jpg ; do mv $x "$2-$3-$4-00-00-00-($i).JPG"; let i=i+1; done
      i=1; for x in *.PNG ; do mv $x "$2-$3-$4-00-00-00-($i).PNG"; let i=i+1; done
      echo "Finished"
      ➜  33  /bin/bash ./rename.sh ~/zixie/temp/1/33 2018 11 23
      /Users/zixie/zixie/temp/1/33
      mv: rename *.JPG to 2018-11-23-00-00-00-(1).JPG: No such file or directory
      mv: rename *.png to 2018-11-23-00-00-00-(1).PNG: No such file or directory
      mv: rename *.PNG to 2018-11-23-00-00-00-(1).PNG: No such file or directory
      Finished
      ➜  33  ls
      2018-11-23-00-00-00-(1).JPG 2018-11-23-00-00-00-(4).JPG 2018-11-23-00-00-00-(7).JPG
      2018-11-23-00-00-00-(2).JPG 2018-11-23-00-00-00-(5).JPG 2018-11-23-00-00-00-(8).JPG
      2018-11-23-00-00-00-(3).JPG 2018-11-23-00-00-00-(6).JPG rename.sh
      ➜  33

怎么批量整理已经归档的照片

这部分内容主要包括:

  • 将照片按月分文件夹保存,这部分比较容易,手动即可操作

  • 将 .jpg 和 .png 的照片统一将扩展名改为大写

  • 将部分命令不合格的照片找出来,例如有时候走神会把照片命名为格式: YYYY-MM-DD-hh-mm-ss.JPG ,例如 2013-03-09-11-51-23.JPG

这部分也专门写了脚本来处理,下面是一个事例:

➜  201802  ls
2018-02-01_09-21-52.jpg 2018-02-01_20-15-28.jpg 2018-02-02_19-02-23.jpg
2018-02-01_15-50-00.JPG 2018-02-02_12-02-13.jpg 2018-02-03-12-44-03.JPG
2018-02-01_15-53-55.jpg 2018-02-02_12-16-01.jpg 2018-02-03_13-05.JPG
➜  201802  cat ~/zixie/github/PhotoManager/shell/optimize.sh
#!/bin/sh
# author zixie
#/bin/bash ~/zixie/github/PhotoManager/shell/optimize.sh ./

function renamePhotos(){
	echo "----------- process photo start -----------"
	echo `pwd`"/ start to check:"
	for photsName in *.jpg;do echo "process $photsName" && mv $photsName `echo $photsName |  tr 'a-z' 'A-Z'`;done
	for photsName in *.png;do echo "process $photsName" && mv $photsName `echo $photsName |  tr 'a-z' 'A-Z'`;done
	echo "----------- process photo end -----------"
}
export -f renamePhotos

cd $1
pwd
echo "============ zixe check photos start ======================"
renamePhotos
for file in ./*
do
	if [ -d "$1/$file" ]; then
        cd $1/$file
		renamePhotos
    fi
done
echo "----------- delete DS_Store-----------"
find $1 -name .DS_Store -delete
echo "----------- find bad name photo -----------"
find $1 -not -name "????-??-??_??-??-??*.JPG"
find $1 -not -name "????-??-??_??-??-??*.PNG"
echo "============ zixe check photos finished ======================"
➜  201802  /bin/bash ~/zixie/github/PhotoManager/shell/optimize.sh ~/3/
~/3
============ zixe check photos start ======================
----------- process photo start -----------
~/3/ start to check:
process *.jpg
mv: rename *.jpg to *.JPG: No such file or directory
process *.png
mv: rename *.png to *.PNG: No such file or directory
----------- process photo end -----------
----------- process photo start -----------
~/3/201802/ start to check:
process 2018-02-01_09-21-52.jpg
process 2018-02-01_15-53-55.jpg
process 2018-02-01_20-15-28.jpg
process 2018-02-02_12-02-13.jpg
process 2018-02-02_12-16-01.jpg
process 2018-02-02_19-02-23.jpg
process *.png
mv: rename *.png to *.PNG: No such file or directory
----------- process photo end -----------
----------- delete DS_Store-----------
----------- find bad name photo -----------
~/3//201802/2018-02-03_13-05.JPG
~/3//201802/2018-02-03-12-44-03.JPG
============ zixe check photos finished ======================
➜  201802  ls
2018-02-01_09-21-52.JPG 2018-02-01_20-15-28.JPG 2018-02-02_19-02-23.JPG
2018-02-01_15-50-00.JPG 2018-02-02_12-02-13.JPG 2018-02-03-12-44-03.JPG
2018-02-01_15-53-55.JPG 2018-02-02_12-16-01.JPG 2018-02-03_13-05.JPG

怎么保存和操作这个量级的照片

  • 存储

    个人目前是使用两个移动硬盘:

    • 一个硬盘作为备份盘,只用来备份,只做拷入拷出的操作,每次拷贝结束检查完整性

    • 一个硬盘作为日用盘,用来转移数据和临时存放中间数据和常用照片;例如有照片处理的时候,从备份硬盘拷出,新的照片处理完以后先按照最终归档保存到日用盘,然后再复制到备份盘

    • 所有照片,按月为目录保存。由于拍照越来越方便,而且单张照片存储空间越来越大,因此有时候一年的照片可能会有上万张,10多G,刚开始我是按年分类存放,后来在照片迁移的时候就会发现 由于同一目录文件太多,经常会出现电脑无响应导致迁移中断 ,每次对比校验完整性都很麻烦,而且 也出现过异常中断导致硬盘扇区损坏,文件不可见等问题 ,虽然使用扇区修复工具基本文件都可以找回,但每次都很麻烦,后面改为按月归档,就完美解决了。

  • 处理

    首先备份盘和日用盘之间的所有操作都是复制,不可剪切。如果备份盘要删除,先迁移到日用盘,转到电脑删除,重新归档处理完成以后,再去替换备份盘,也是复制,删除,重命名的方式

    日常处理都不直接在移动硬盘处理,从日用盘先复制一份到电脑,处理并检查无误以后迁移到日用盘,再检查一次迁移到备份盘

遇到的其他问题

  1. 部分拍摄设备记录的时间不是格林尼治时间,而是当地时间,对于这类照片,需要批量结合时区调整时间。而且这类照片很难发现,尤其是时区相差不大的时候, 这种情况在使用相机是比较容易遇到

  2. 有时候会使用连拍等方式,导致会有很多很相似的照片,这部分照片其实可以选择后只保留个别几张

  3. 如果不是先拍照片,而是使用微信里面的拍摄拍照,然后发送,即使选择原图,微信也会清除位置信息,因此建议任何时候先用手机相机拍照,然后再让各种软件使用。对于这类照片, 可以用iOS的 Photos 结合上下文逐张分析确认,这部分工作最耗时,我19年和20年先后处理几千上万张这样的照片,基本用了一个月 ,直接吐血


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python神经网络编程

Python神经网络编程

[英]塔里克·拉希德(Tariq Rashid) / 林赐 / 人民邮电出版社 / 2018-4 / 69.00元

神经网络是一种模拟人脑的神经网络,以期能够实现类人工智能的机器学习 技术。 本书揭示神经网络背后的概念,并介绍如何通过Python实现神经网络。全书 分为3章和两个附录。第1章介绍了神经网络中所用到的数学思想。第2章介绍使 用Python实现神经网络,识别手写数字,并测试神经网络的性能。第3章带领读 者进一步了解简单的神经网络,观察已受训练的神经网络内部,尝试进一步改......一起来看看 《Python神经网络编程》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具