何谓管理

「管理」一词对于照片数据量比较少的时候来说几乎是没什么意义的,几十张上百张照片瞟一眼几乎都知道是些啥,但是当数码照片达到成千上万的量级时,要找张照片人眼一瞥可就不那么容易找到了,「管理」也只有在这种情况下才变得有些实用价值。

「管理」在计算机中的实现,核心理念可以认为是「抽象」。其实不只是在计算机中存在抽象,「抽象」无处不在:

  • 数学中常用的换元法和函数就是一种常用的抽象
  • 各种数学物理模型就是对现实生活中的抽象
  • 大学里学校的院-系-班,抽象层次逐级提升
  • C语言可以认为是对汇编语言的抽象
  • In Unix Everything is a File

  • 抽象的目的无非是为了人类更好的去掌控,去使用,或者说是为了「管理」上的方便。照片不像文字,可搜索性还是比较差的,所以喽,不得不借助点外力了

exiftool简介及使用

exiftool 是一种用于读写操作图像、音频和视频媒体信息的自由软件,可通过命名行和Perl library调用,如果习惯于GUI的话可以在Windows下试试ExifToolGUI, 也有人用Python对其命令行应用做了封装——PyExifTool. exiftool的命令行个人感觉对10^3数量级的照片已经够用了,如果有上万张照片要处理的话用PyExifTool应该要更快一些。
关于exiftool的使用,官方文档十分详细,在Terminal里man exiftool得到的内容也是一样的。我这次整理照片主要使用了exiftool提供的文件重命名功能,对个别exif信息不全的照片做了修改,比如补上datetimeorginal等信息。
比较了众多照片的管理方式,自己最终的方案是「年/年月/文件」+「digikam的Tags」,年/年月 的文件夹组织方式可以保证唯一性,归类时方便。Tags可以跨文件夹,以「地点/人物/事件」等标签组织。这两种方式结合起来就是二维的结构了。之后无论照片数目如何增多,几乎都可以在1分钟以内找到一张想要的照片。

根据照片exif中的Create Date参数格式化文件名

使用exiftool进行实际操作之前最好先拿张照片出来练练手,有个感性的认识就好。 exiftool photo.jpg默认显示所有的信息

exiftool '-filename<CreateDate' -d %Y-%m-%d_%H-%M-%S%%-c.%%le -r .  

OK, 下边解释一下每个参数的含义:

  • ‘-filename<CreateDate’ 根据照片的创建日期和时间重命名文件,如果CreateDate信息不对的话可以看看DateTimeOriginal对不对,代替之
  • -d 设置日期和时间值的显示格式
  • %Y-%m-%d_%H-%M-%S 意思就是「年-月-日_时-分-秒」,比如 2013-08-31_14-23-45
  • %%-c 用于文件创建时间相同时自动在秒后边添加数字后缀,从1开始。比如2013-08-31_14-23-45-1, 和 2013-08-31_14-23-45
  • .%%le 保持原文件的扩展名,但是全部小写。比如原文件后缀为.JPG, 使用.%%le之后则变为.jpg
  • -r 递归处理子文件夹,有时候一个文件夹下也许还有很多子文件夹,子文件夹中又有子文件夹,-r就是用来干这事的
  • . 最后的「.」指的是待处理目录,这里的「.」当然就是指当前目录啦。可以自行更改
    还有不懂的看看文档就好了。
    接下来就是整理到相应的文件夹了,如上所述,我要的是「年/年月/文件」的形式,口诀如下:
exiftool '-Directory<CreateDate' -d ~/Pictures/%Y/%Y%m -r . 

~/Pictures/%Y/%Y%m 是目标文件夹,最底层的文件夹形式为「年月」,只用月的话有时候会引起不必要的麻烦。其他的参数就不解释了,不懂的自行到终端找man去。
如果没有以上exif信息的话原文件仍原封不动地保存在原地,等着你去处理咧。像这类顽固分子大部分是截图或者低劣手机拍的照片,拿digikam打咯Tags就好了。如果只是一些小毛病的话就用exiftool修一修吧,也不是很碍事。像我用过的有如下秘技:
复制tag(此tag可不是digikam中的tag)
exiftool -TagsFromFile from.jpg to.jpg
调整创建时间
exiftool -AllDates-='92:0:0 0:0:0' .
从文件内复制参数
exiftool "-CreateDate<DateTimeOriginal" file.jpg
这个是参考的 http://cpanforum.com/posts/4352

Digikam简介及使用

喂!有完没完,digikam凭发音就知道干嘛的了,目测是Linux下最重量级的数码照片管理软件了,如果只在Win下使用的话,Picasa更合适些。你能想到的功能它基本都有,你想不到的它也有!赞美之词罢了,别太当真~ 类似于exiftool的功能digikam也是有的,只是个人觉得这种活在GUI下太麻烦,灵活性也没exiftool高。不过拿digikam给照片打Tag还是很合适的,digikam的其他N多功能自己暂时还用不着,Digikam的Tutorials介绍了很多实用的技巧。

—EOF—