自动化读取EXIF信息,给照片打上时间戳和地理位置
本文最后更新于 159 天前,如有失效请评论区留言。

自动化读取EXIF信息,给照片打上时间戳和地理位置

示例图片

Sample-image.png

介绍

该脚本可以从图片中读取EXIF信息,提取拍摄时间和GPS坐标,并使用这些数据获取详细的地址信息。然后,它会将这些信息添加到图片上,并保存带有地理位置标签和时间戳的新图片。

开源地址

Github | Gitee

功能

  • 读取图片EXIF信息
  • 从GPS坐标反解析地址
  • 将时间戳和地址添加到图片上
  • 支持中文地址格式
  • 自动重试和处理失败的操作

环境要求

  • Python版本: 3.7 或更高
  • 操作系统: Windows, macOS, Linux
  • 国内用户需要代理环境

使用方法

安装 Python

微软商店安装

直接搜索安装即可,注意要安装 3.7 以上版本,推荐 3.113.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.jsonfont_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问题没有处理成功的图片重新处理。

版权声明:本文为xiaomi250原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。

评论

  1. wyzm370
    Windows Chrome 122.0.0.0
    6 月前
    2024-3-27 23:27:16

    正在检查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 服务当前不可用。请稍后重试。

    • 博主
      wyzm370
      Android Chrome 99.0.4844.88
      6 月前
      2024-3-28 6:11:32

      请问您挂梯子了吗?如果没有,您可以挂梯子试一下。

      • wyzm370
        xiaomi250
        Windows Chrome 123.0.0.0
        已编辑
        6 月前
        2024-3-28 15:28:53

        用Clash全局或者规则模式都显示Nominatim 服务当前不可用。请稍后重试。。。
        ——————————————————
        换了台电脑可以了φ( ̄∇ ̄o),Github已Star

        • 博主
          wyzm370
          Android Chrome 99.0.4844.88
          6 月前
          2024-3-28 22:21:18

          感谢支持!

  2. 超级马里奥
    Windows Chrome 107.0.0.0
    7 月前
    2024-2-21 20:36:08

    好厉害

    • 博主
      超级马里奥
      Windows Chrome 121.0.0.0
      7 月前
      2024-2-21 21:49:56

      感谢支持!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇