自动化读取EXIF信息,给照片打上时间戳和地理位置
示例图片
介绍
该脚本可以从图片中读取EXIF信息,提取拍摄时间和GPS坐标,并使用这些数据获取详细的地址信息。然后,它会将这些信息添加到图片上,并保存带有地理位置标签和时间戳的新图片。
开源地址
功能
- 读取图片EXIF信息
- 从GPS坐标反解析地址
- 将时间戳和地址添加到图片上
- 支持中文地址格式
- 自动重试和处理失败的操作
环境要求
- Python版本: 3.7 或更高
- 操作系统: Windows, macOS, Linux
- 国内用户需要代理环境
使用方法
安装 Python
微软商店安装
直接搜索安装即可,注意要安装 3.7
以上版本,推荐 3.11
或 3.12
。
官网下载安装
进入 Python官网 然后下载安装程序一路下一步就可以了,Windows用户下载下面箭头指的就可以了。
或者进入 下载页 ,自行根据系统下载即可。
下载源代码
Git
第一步先安装Git,首先进入 Git官网 ,官网均为中文,根据自己的系统进行下载安装。
现在默认你已经安装完Git。
让我们把源代码克隆下来,在桌面空白地方右键,选择在终端打开。
输入下面代码克隆项目源码:
git clone https://github.com/fjd2004711/print-exif-to-photo.git
国内用户 用下面的代码:
git clone https://gitee.com/xiaomi250/print-exif-to-photo.git
显示如下图则代表克隆成功
若克隆项目代码失败,请检查网络是否能正常访问 Github ,然后重新克隆项目代码。
此时,桌面出现 print-exif-to-photo
文件夹,至此源代码下载完成,可以跳转至 安装依赖 章节。
Github下载
首先确保你可以正常访问GitHub,点击此访问项目源代码 ,然后下载源代码即可。
下载完成后解压至桌面即可。
Gitee下载
访问 Gitee项目仓库 ,下载源代码即可。
安装依赖
运行此脚本需要安装以下Python模块:
Python 包 | 依赖需求 |
---|---|
PIL | >= 10.2.0 |
geopy | >= 2.4.1 |
piexif | >= 1.1.3 |
下面进行安装,在文件夹内空白处,右键 在终端中打开
,输入下面代码安装所需依赖。
pip install -r requirements.txt
如下图即为安装成功:
使用
导入图片并运行
将所有需要处理的图片放置在代码根目录的 images
文件夹内,输入下面命令执行程序:
python main.py
注意 所有命令均代码根目录下执行。
这样就算是执行成功了,处理成功的图片会在 images\tagged_images
目录下,没有 EXIF 信息的图片将被存放在 images\no_exif_images
目录下。
更改字体及样式
- 将字体文件放入
fonts
文件夹。 - 修改
config/style.json
中font_path
的字体路径。 (例如fonts/example.ttf
,默认为msyh.ttc
[微软雅黑] )
配置文件说明
font_path
: 使用的字体文件的路径。margin_scale
: 边距比例,定义为图片宽度的一部分。font_size_scale_landscape
: 横向图片的字体大小缩放因子。font_size_scale_portrait
: 纵向图片的字体大小缩放因子。min_font_size
: 文本的最小字体大小。shadow_color
: 文本阴影的颜色。shadow_offset
: 文本阴影的偏移量(以像素为单位)。text_color
: 文本的颜色。spacing
: 行间距,即行与行之间的垂直距离。
问题处理
程序会输出每张照片的处理结果,由于 Nominatim API 要求输入 user_agent 并且会限制请求频次,程序每次处理完一轮后会程序生成 user_agent ,并将因为API问题没有处理成功的图片重新处理。
正在检查Nominatim服务状态…
Nominatim 服务状态: 遇到异常 – HTTPSConnectionPool(host=’nominatim.openstreetmap.org’, port=443): Max retries exceeded with url: /search?q=Eiffel+Tower&format=json&limit=1 (Caused by ProxyError(‘Cannot connect to proxy.’, FileNotFoundError(2, ‘No such file or directory’)))
Nominatim 服务当前不可用。请稍后重试。
请问您挂梯子了吗?如果没有,您可以挂梯子试一下。
用Clash全局或者规则模式都显示Nominatim 服务当前不可用。请稍后重试。。。
——————————————————
换了台电脑可以了φ( ̄∇ ̄o),Github已Star
感谢支持!
好厉害
感谢支持!