背景
我们都拍过许多图片、视频,但它们的整理和检索是一件麻烦事。
我的手机拍了几千张图,放在电脑上以便查看,前几天我才看到了一张蜻蜓的照片,结果,第二天,我想找它,使劲翻也没找到,幸亏我记得它是在我老家市区拍的,根据 GPS 信息,才定位到了它,那是 2018 年夏天拍的一张图。
这就让我想:如果一张图经过了编辑、上传、下载,里面的 EXIF 信息都被清除了,拍摄时间没了,拍摄地点没了,放在一大堆上千张的图片中,我该怎么找到它?
或者说,在将一张有意义的图片放入上千张图片的图库之前,我应该做一些什么措施,以确保我以后可以很快找到这张图片?
现状
手机端
在手机上,我们有手机相册,例如小米的相册、谷歌的相册,如果你不介意照片隐私,可以开启他们的云服务,这些公司会使用经过大量用户照片训练过的智能引擎,为你的照片做一些基本的分类,例如:
- 人脸识别
- 风景识别
- 文档、证件识别
- 物品、动物识别
- ……
然后再为这些识别结果做 智能相册 ,这非常方便。但上述这些功能的前提是:
- 使用他们的相册软件
- 使用他们的云服务
所有这些识别结果,仅仅在 相册 APP 内部可用,出了这些 APP,你无法使用所有上述的智能识别结果。
如果你在电脑上整理图片,上面的识别结果你一个也用不了。
上述的功能也受限于软件,如果你相给照片添加自己的备注,批量添加自己的标签,对不起,做不到。
电脑端
素材管理软件
在电脑端,有一些出色的照片管理软件,国产的有:
- Eagle(收费)
- BillFish(目前免费)
这两款软件,都能为图像进行智能整理、打标签、添加备注。但是所有的标签、备注都是在他们自己的数据库中存储,如果脱离了这两个软件,或者将图片拷贝到其它存储位置,那些标签、备注都不会跟随文件。
同时,上述两款软件,他们都是用的自己的数据结构,来存储图片信息:
- Eagle 将每张图片单独储存在一个乱码名字的文件夹中,文件夹中放一个 json 文件以存储元数据
- Billfish 保留了原始文件夹结构,但只能添加标签信息,标签信息存储在单独的数据库
在使用中,上述软件都有共同的问题:需要导入,导入过程有各种问题,例如:
- 有些格式不支持
- 导入速度很慢
总之,就是让人使用不放心。
基于文件系统的照片管理器
另外,还有一些老牌图片管理软件:
- ACDSee (现在广告有点多)
- digiKam
- XnView MP
- FastStone Image Viewer
这几个软件在浏览管理图片方面,还是不错的,尤其是 digiKam 还提供人脸识别分类功能。
但它们的共同点是:没有办法为图像添加文字描述信息,以方便以后通过文本搜索照片
严格意义上,也倒有:一些软件可以为图片添加描述信息到同目录的 descript.ion
文件中,它其实就是 description
文件名加了个点,里面的内容是 "文件名" 描述
,每行一个描述。
但这个方法不太优雅,会有这样的问题:
- 不同软件对
descript.ion
的编码不同,有的使用 gbk 编码,有的使用 utf-8 编码,由于编码没有标准,会乱(中日韩文字的痛点) - 一旦文件名更改,
descript.ion
是不会自动改的 - 一旦移动到其他文件夹,
descript.ion
里的信息也不会随之移动。
要求
我希望,能给文件添加标签、文本备注、人物名称、拍摄时间等可搜索的文字信息,这些信息要能够尽可能:
- 随着图片移动而移动
- 不会因编辑图片而丢失
- 可以跨平台
- 最好能够方便使用各种第三方软件搜索
提出解决方案的过程
能够做到我的要求的,只有文件名了。
因此,要设计一套语法规则,类似 Markdown 的标记语法,用于记录照片、视频的关键信息。
设计需求
这套语法需要能做到:
- 将一些关键文本信息写到文件名中
- 在记录备注时,最好能记录多行文字,而不是一大坨文字备注
- 不同类型的信息要有区分,方便软件、程序识别
- 最重要的:一定要美观,即便在资源管理器中显示,也要好看!
文件名限制
长度限制
其实不同系统对文件名长度是有限制的,我查阅了一下:
- Windows 255 个字符
- Android 255 字节
- Linux 255 字节
字符限制
而文件名字符也有限制,有些字符不能用:
< > / \ | : " * ?
可用的英文键盘特殊符号有:
$ # & @ ( ) - [ ] ^ ~
等以及其它字符
初步方案
参考自 Taglyst,我构思了初步的照片整理文件名标准
语法定义:
(YYYYMMDD-HHMMSS)标题名#标签1#标签2@名字1@名字2^用户评论&换行后的评论.ext
示例:
(20200102-130843)酥肉汤#美食#老家@李明@刘大龙^我和李明在他家,第1次学了炸酥肉,煮了汤&他表弟在旁边捣蛋.mp4
(20190207-105303)合影#过年#走亲戚#老家@唐语^二姨家来走亲戚,和表姐合影.jpg
语法设计解释
- 开头有一个括号括住的时间戳,它有这样几方面作用:
- 字符开头,使得标注过的照片,以文件名排序时靠在前排
- 这样的时间戳格式比 14 个数字连成一坨要美观
- 记录照片拍摄时间,即便以后因为各种原因, Exif 中的拍摄信息丢失,也可以根据文件名信息,修复 Exif 中的拍摄时间。这对于使用拍摄时间进行排序相当重要。
- 文字标题,就是一个简短的标题,有没有都行
- 以
#
开头和作为分隔符的一个或多个标签,符合用户对日常生活中标签的映像,看文件名时,方便理解这是标签。 - 以
@
开头,标注人物,符合在社交媒体上@用户名
的思维,也是为了方便理解 - 以
^
作为注释(评论)的开头,之后所有的文字都是注释;以&
作为换行符。原因是:- 前面的内容与注释之间需要一个符号分隔
- 这两个符号在日常注释性文字中不大可能用上
- 注释不能是一坨,有分段的需求,就要用一个允许使用的、方便输入的符号,作为换行符的标识
下一步,程序实现
如果定稿了语法,就可以设计一个程序了,它可以是
- 脚本
- 各种语言设计的 GUI
- Quicker 动作
使用方法是:
-
选中图片,觉得应该添加些文本信息
-
按下快捷键,唤起程序
-
程序获取文件路径、元数据时间戳,解析文件名成分,弹出一个提示框,有多个输入框,分别用于填:
- 标题
- 标签
- 人物
- 注释
如果文件名中已经有上述语法,就应该解析后,预填入各个输入框中,以便修改
-
点击完成,根据设计的语法,合成为规范文件名,为照片、视频重命名。
结语
具体实现的程序、小工具,技术要求不高,只要花些时间,肯定能写出来。我现在还没时间写,但是脑海中弹出了这样一个问题解决方案,还是该用文章写出来。
思想方法指导实践,实践前,多完善思想方法,可以事半功倍。
以上就是我为文件整理所构想的一个解决方案,发出来,希望否能收到一些建设性、启发性意见、想法,希望大家不要吝啬想法呀!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于