📍 GeoRenamer

按位置信息重命名照片/视频 — 读取 GPS 坐标,自动反查地名,按自定义格式批量重命名文件。

✨ 功能特性

  • 📍 GPS 定位:读取照片/视频的 GPS 坐标,支持 JPEG、PNG、HEIC、RAW、MP4、MOV 等格式
  • 🗺️ 地名反查:支持离线(GeoNames 70,000+ 城市)和在线(高德/百度/腾讯地图)
  • ✏️ 自定义命名规则:支持占位符组合(日期、地点、原文件名等)
  • 🎨 个性化设置:背景颜色主题、API Key 本地保存
  • 📁 批量处理:支持拖拽添加,预览后确认执行
  • 🔄 区域排序:可选从大到小(省→市→区)或从小到大(区→市→省)

📦 安装使用

下载安装版(推荐)

  1. 下载 GeoRenamer Setup x.x.x.exe
  2. 运行安装程序,按提示完成安装
  3. 从桌面或开始菜单启动

使用便携版

  1. 下载 GeoRenamer x.x.x.exe
  2. 双击直接运行,无需安装

🛠️ 开发环境

环境要求

  • Node.js >= 18
  • npm 或 pnpm

安装依赖

npm install

开发运行

npm start

打包构建

# 安装版
npm run build:installer

# 便携版
npm run build:portable

# 全部
npm run build

📖 使用说明

基本操作

  1. 点击 ➕ 添加文件 或拖拽照片/视频到窗口
  2. 选择地名引擎(推荐高德/百度/腾讯,国内更快更准)
  3. 点击 🔍 开始解析,等待读取元数据和反查地名
  4. 在表格中预览「原文件名 → 新文件名」
  5. 对无 GPS 的文件,点击 ✏️ 手动补地点 输入地名
  6. 确认无误后点击 ✅ 确认重命名 执行

命名规则

默认格式:{date}_{place}20250101_153000_杭州西湖区.jpg

支持的占位符:

  • {date} - 日期时间(20250101_153000)
  • {place} - 完整地点(杭州西湖区)
  • {region} - 行政区域(根据排序设置自动组合)
  • {province} / {city} / {district} - 省/市/区
  • {original} - 原文件名
  • {年} / {月} / {日} / {时} / {分} / {秒} - 时间分量

区域排序

  • 从小到大:区→市→省(如:西湖区杭州浙江)
  • 从大到小:省→市→区(如:浙江杭州西湖区)

⚙️ 设置说明

地名引擎

引擎说明需要
离线城市库GeoNames 数据,70,000+ 城市无需网络
高德地图国内推荐,精确到区县Web 服务 Key
百度地图覆盖最全AK
腾讯地图微信生态Key

外观设置

  • 支持自定义背景颜色
  • 提供 6 种预设颜色主题

📁 项目结构

geo-renamer/
├── assets/           # 图标和资源文件
├── data/             # 离线数据(城市库、翻译映射)
│   ├── cities.json   # 70,000+ 城市坐标库
│   └── translations.json  # 多语言地名翻译
├── lib/              # 核心逻辑
│   ├── geocode.js    # 地名反查(离线/高德/百度/腾讯)
│   ├── metadata.js   # EXIF 元数据读取(exiftool)
│   ├── naming.js     # 文件名生成与去重
│   └── store.js      # 设置持久化
├── renderer/         # 前端界面
│   ├── index.html    # 主页面
│   ├── app.js        # 界面逻辑
│   └── style.css     # 样式
├── main.js           # Electron 主进程
├── preload.js        # 预加载脚本
└── package.json      # 项目配置

🔧 技术栈

  • Electron - 跨平台桌面应用框架
  • exiftool-vendored - 专业元数据读取(支持 200+ 格式)
  • GeoNames - 全球城市坐标数据库
  • Nominatim/高德/百度/腾讯 - 在线地名反查 API

📄 许可证

  • 允许:个人使用、20 人及以下公司团队内部使用
  • 允许:教育机构、非营利组织使用
  • 禁止:商业盈利使用(销售、付费服务、商业分发等)

如需商业使用,请联系作者获取商业授权。

详见 LICENSE

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📝 更新日志

v0.0.5

  • 优化启动性能(懒加载、空间索引)
  • 移除菜单栏
  • 自定义应用图标
  • 移除背景图片功能
  • 修复中国地名显示问题

v0.0.4

  • 新增省/市/县级别命名占位符
  • 支持行政区域排序(从小到大/从大到小)

v0.0.3

  • 新增百度地图、腾讯地图支持
  • GeoNames 完整数据(69,972 个城市)
  • 自定义命名规则
  • 设置本地保存

v0.0.2

  • JavaScript 重写(Electron)
  • 内置 exiftool-vendored
  • 高德地图支持

v0.0.1

  • 初始版本(Python)
  • 基本功能实现