规范性图片文件名整理系统的构思,用以解决图片整理、检索的问题

本贴最后更新于 1155 天前,其中的信息可能已经时移世改

背景

我们都拍过许多图片、视频,但它们的整理和检索是一件麻烦事。

我的手机拍了几千张图,放在电脑上以便查看,前几天我才看到了一张蜻蜓的照片,结果,第二天,我想找它,使劲翻也没找到,幸亏我记得它是在我老家市区拍的,根据 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

语法设计解释

  1. 开头有一个括号括住的时间戳,它有这样几方面作用:
    • 字符开头,使得标注过的照片,以文件名排序时靠在前排
    • 这样的时间戳格式比 14 个数字连成一坨要美观
    • 记录照片拍摄时间,即便以后因为各种原因, Exif 中的拍摄信息丢失,也可以根据文件名信息,修复 Exif 中的拍摄时间。这对于使用拍摄时间进行排序相当重要。
  2. 文字标题,就是一个简短的标题,有没有都行
  3. # 开头和作为分隔符的一个或多个标签,符合用户对日常生活中标签的映像,看文件名时,方便理解这是标签。
  4. @ 开头,标注人物,符合在社交媒体上 @用户名 的思维,也是为了方便理解
  5. ^ 作为注释(评论)的开头,之后所有的文字都是注释;以 & 作为换行符。原因是:
    • 前面的内容与注释之间需要一个符号分隔
    • 这两个符号在日常注释性文字中不大可能用上
    • 注释不能是一坨,有分段的需求,就要用一个允许使用的、方便输入的符号,作为换行符的标识

下一步,程序实现

如果定稿了语法,就可以设计一个程序了,它可以是

  • 脚本
  • 各种语言设计的 GUI
  • Quicker 动作

使用方法是:

  1. 选中图片,觉得应该添加些文本信息

  2. 按下快捷键,唤起程序

  3. 程序获取文件路径、元数据时间戳,解析文件名成分,弹出一个提示框,有多个输入框,分别用于填:

    • 标题
    • 标签
    • 人物
    • 注释

    如果文件名中已经有上述语法,就应该解析后,预填入各个输入框中,以便修改

  4. 点击完成,根据设计的语法,合成为规范文件名,为照片、视频重命名。

结语

具体实现的程序、小工具,技术要求不高,只要花些时间,肯定能写出来。我现在还没时间写,但是脑海中弹出了这样一个问题解决方案,还是该用文章写出来。

思想方法指导实践,实践前,多完善思想方法,可以事半功倍。

以上就是我为文件整理所构想的一个解决方案,发出来,希望否能收到一些建设性、启发性意见、想法,希望大家不要吝啬想法呀!

  • 奇思妙想

    虽然我们的世界构建在想象力上,但光想不实操也是没用的。

    60 引用 • 623 回帖 • 5 关注
1 操作
HaujetZhao 在 2021-10-23 21:46:38 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...