查看原文
其他

信息化之照片整理之术

张金龙1992 地质掘墓人 2022-12-04

本篇文章介绍用信息化手段整理照片

何为信息化,下面引用百度百科说明

“信息化以现代通信、网络、数据库技术为基础

对所研究对象各要素汇总至数据库

供特定人群生活、工作、学习、辅助决策等和

人类息息相关的各种行为相结合的一种技术

使用该技术后,可以极大的提高各种行为的效率

并且降低成本,为推动人类社会进步提供极大的技术支持

今天以批量整理照片为例

从结构化、信息化等角度思考

运用批处理软件cmd+excel

系统组织硬盘照片

整理成一篇综合信息化示例给大家参考


写这篇文章有个经历背景

一个战友问我的

“如何找到以前的一张照片”

我把这个问题做个延伸

如何快速定位某年某月的一个活动照片

也请大家先思考

下文会有我思考和方案

如果你们会有更好的方法

可以在评论区讨论

事情原委截两张图

当时我给他的建议

直接用Everything定位照片或者按日期排序

实际操作不能满足他的需求

原因有两点

一是照片名字都是相机自动生成的,没规律

第二是文件夹太多,他也没整理过

我给他的答复是写个小程序

其实程序思路也很简单

遍历所有文件夹

读取照片exif信息

将照片属性写进数组

批量创建目录

循环写入指定目录

上面是面向过程的编程思想

对没有编程基础的人不是有很好的

本文不做具体介绍


本篇文章尝试用一种

既能让大家能接受的信息化思路

又有可以有思考,有操作的方法

谈到批处理

大家肯定能想到cmd

可以批量获取名称,批量创建文件夹,批量复制移动

按照这个思路

我系统整理了自己硬盘照片

下面用几个示例数据

将一些关键性的操作记录下来整理成文

为强调数据分析过程

文章仍写成六个部分




一、分析目的

第一部分分析目的

以“问题、想法、方案”

三个结构化维度考虑

(一)问题

随着智能设备的普及

每个人都可以随时随地拍照

久而久之照片积累会越来越多

你将很难整理归类

那么怎么办?


(二)想法

我的想法很简单

用信息化思想

提取照片的有用信息

批量重命名

用故事组织内容

用时间+地点组织文件夹

然后各自归类

总的来说就是

结构化整理,统一管理,可视化表达

结构化整理统一管理可视化表达



(三)方案

方案1直接编程可以,这里不做说明

方案2,借助cmd等常用软件实现上面的想法

大致需要以下几个步骤

1、使用jhead命令获取照片属性,并写入excel中

2、写在excel中整理成结构化的行数据(时间、地点等属性)

形成原始数据库待用

3、使用cmd的jhead命令,重命名所有照片(拍摄时间)

4、批量创建时间+地点目录(excel中制作cmd命令)

5、使用cmd批量移动命令(照片与目录匹配)

6、建立空间数据位置集(Arcgis链接数据库)


在具体介绍方案2前

首先对“照片”这类数据资料作说明

为什么照片能批量处理

因为照片这类数字化资源有着自己的“元数据”

打个比方

我给拍照的过程比喻新生儿的诞生

当我们拍照时,随着咔的一声,照片生成

不仅创造了照片名字,其实也给照片落了“户口”

这些户口记录就可以理解成“元数据”

有户口了就能查到家庭住址

换成照片整理的信息化表达就是

有信息记录就能提取关键字段

有个关键字段就能结构化处理

有结构化数据就能当成“数据库”

有数据库就能统一管理

就能查询、分析、可视化表达等


为加深理解我们从实例出发

打开一个相册

可以看出,有的照片名字

是拍照时的时间(图1)

而有的照片名字则是一列序号(没有任何规律)图2

1时间命名
2无规律

接下来我们查看照片属性

选一张手机拍的照片

右键单击这张照片

可以看到照片的拍摄时间(图1)

还可以找到拍摄照片时的位置(图2)

位置信息属于隐私

这个属性跟你相册设置有关

一般的手机相册app都有这个设置

用户可以选择是否储存照片的位置信息

1拍摄时间属性
2照片位置属性

在来看上面这些信息

不就是照片“出生证明”么

贴合比喻

虽然有的照片命名时候没规律(父母起的名字)

但是每张照片都有属性(全国统一的出生证明)

而且生活照片

是你亲自拍摄,它定格了生活的瞬间

记录你在那时那地的心情

这些照片是有故事的

对于有故事性的事物记录

我通常采用记叙文的4要素

时间、地点、人物、事件做结构化字段

也正好适合照片的“出生证明”

这是信息化批量处理数据的基础


二、数据收集

平时我也喜欢摄影

遇到有意思的事也会记录下来

从高中毕业到现在也有10年多了

积累近上百个G的照片

也整理过但是不系统

借此次战友问题

也把自己电脑、网盘、手机、相机等照片

系统整理

硬盘
网盘
手机
相机

所有照片统一整理

不怕照片多、也不怕文件夹乱

反正都是批量生成,不用自己一个个复制粘贴

收集的越多越好


三、数据整理

(一)数据清洗

大致整理下照片

找出不含exif信息的照片

这类照片主要是经过修改

或上传网络再下载本地的

不做本文批量处理对象


(二)数据转换

将所有照片复制到一个文件夹

方法:在cmd中输入以下代码

for /r "D:\示例数据" %f in (*.jpg) do @xcopy "%f" "D:\示例数据\所有照片" /f

说明:功能是将红色字体文件夹内所有照片

(包括子目录/子子目录的)

全面复制到绿色文件夹内

复制前与复制后的对比下图

复制前
复制后

详细操作步骤如下


(三)数据提取

1.jhead命令介绍

做批处理之前

先介绍一个处理照片exif信息的工具

jhead.exe

它的使用方法

jhead 参数列表 jpg文件列表

比如下文要用到的

获取所有照片exif信息

jhead -se *.jpg

在比如修改文件名用参数-nf 

-nf 后面可以加参数 [format-string](下图)

举例:将照片改名成

年4位_月2位日2位_4位序号.jpg

“2009_1201_0001.jpg”

jhead -nf%Y_%m%d_%04i *.jpg


此外jhead也提供遍历子目录功能

方法:**通配符来代替子目录

同样包括子目录的子目录

jhead -se **/*.jpg

有了“利其器”的工具知识

接下来实现我们的需求


2.所有照片统一命名

按拍摄日期的年月日格式命名

输入cd进入目标目录(待处理文件夹)(图1)

在cmd中输入以下字符

jhead -nf%Y_%m%d_%04i **/*.jpg

1进入目录
2cmd输入

3改名前
4改名后

详细操作如下



3.获取所有照片exif信息并保存excel

在cmd中能够输入以下字符

jhead -se **/*.jpg >1.xls

详细操作见下图




(四)数据计算

1.分析照exif信息

每隔一个空行为一个照片的数据(图1)

有的照片有7行,有19行,20行不一样

这是因为不同厂家相机内置拍照软件不一样

exif版本也不一样

没关系

我们提取照片exif信息

目的是为了获取拍摄时间和GPS(图2)

仔细观察每张照片exif信息都有

可以继续进行下面的操作

1jhead获取的exif信息2目的样式


2.整理成结构化数据

什么数据最有用

毫无疑问结构化数据

它也称作行数据

是由二维表结构来逻辑表达和实现的数据

下面我们整理表格实现

具体方法如下:

筛选A列空行,删掉

然后再给A列分列,字段与值分开

详细操作如下图

    
然后新建一张工作表

分别筛选件名字段File name

纬度字段GPS Latitude

经度字段GPS Longitude

粘贴到新表中

File nameGPS LatitudeGPS Longitude

详细操作如下图


如果是同一厂商的照片

例如每隔18行为一个照片信息

可以每隔18行进行转置

输入以下公式,全自动生成字段值

=OFFSET($C$1,(ROW()-1)*18+COLUMN()-COLUMN($G$1),0,1,1)


3.获取照片位置省市县信息

通过以上步骤

我们初步获取了照片属性数据库

有了经纬度的值

参考上一篇多源异构数据转换文章

可以转到空间位置上


下面我们利用Arcgis

给每个照片挂上位置属性

首先整理照片的GPS数值格式

Arcgis支持十进制的经纬度数值导入

把41d 15m 38.7130s转十进制41.260754°

输入以下公式

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B13,"d",":"),"m",":"),"s",)*24


Arcgis添加XY数据

详细操作如下图

注意选择地理坐标系


然后导出实体文件

在工具箱中找到标识或者空间连接工具

用中国地州界(市域)连接照片

给照片附上位置

详细操作如下


将属性复制到excel数据库中

至此我们得到了一个照片数据库



4.cmd批量创建文件夹

接下来我们用ctrl+e先做一个日期辅助L列

再做一个辅助M列 文件夹名称

然后在M2中输入=L2&"_"&J2

有了文件夹名称

下一步利用cmd批量建文件夹

首先在建辅助列N

在N2中输入="MD "&M2(注MD后有空格)


新建一个工作表sheet

复制cmd新建文件夹命名,去重复

复制粘贴到cmd中

批量创建文件

详细操作如下



5.cmd批量移动照片到对应的文件夹

在做辅助O列

在O2中输入="MOVE "&E2&" "&M2

复制粘贴到cmd中

详细操作如下图


为了便于操作演示

我挑选几个示例数据操作

至此我们所有照片整理完

前面啰嗦的内容较多

后三章内容简单简写,仅提思路

四、数据分析

有了照片数据库

我们就可以进行数据分析

可以分析的也很多

比如照片信息的横向分析

统计下全国旅游打卡的城市

也可以纵向分析

对比不同年份的休假时间段

预测分析

计划后几年的假期安排等



五、数据展现

在可视化设计领域有句词

叫文不如字,字不如表不如图

对应照片整理可以这样理解

文不如字(堆积的照片)

字不如表(照片数据库)

表不如图(可视化图件)

一些思路:

做实体文件的展示可以用cmd树形结构

做照片信息分析图表可以用powerbi

做空间位置可视化展示可以用Arcgis



六、总结

本篇文件介绍整理照片的方法
以信息化、结构化思维考虑问题
采用数据分析方法论架构文章
同时演示cmd、excel等工具
批量处理文件操作

总结成一张思维导图

大家有时间也可以按照这个思路

整理自己的资料,不限于照片

旨在提高个人的工作效率

培养个人信息化能力

另:后台回复jhead获取jhead.exe

存放位置与cmd.exe一致





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存