在日常工作和生活中,我们经常需要修改照片的定位信息(经纬度),比如整理旅行照片、规范工作图片元数据、修复误判的照片定位等。手动修改单张照片的经纬度繁琐且低效,今天给大家分享两个修改照片位置信息的方法,从简单的界面话工具到编程代码的方式实现。
如何修改照片定位信息?详细介绍两个方法
方法一:使用"汇帮元数据编辑器"修改照片的定位信息
一、工具准备:汇帮元数据编辑器
1. 软件简介
汇帮元数据编辑器是一款专业的文件元数据处理工具,支持图片、Office文件等多种格式的元数据编辑,其中图片元数据编辑模块可精准修改照片的经纬度、拍摄时间、作者等信息,核心优势是支持批量操作,可一次性修改多张照片,且直接修改原文件,无需额外导出保存,大幅提升效率。
2. 软件下载地址
https://www.huibang168.com/metadata
二、完整操作步骤(批量修改照片经纬度)
步骤1:安装软件并进入图片元数据编辑模块
-
下载完成后,按照提示完成软件安装(默认下一步即可,无需修改额外设置);
-
启动软件,进入主界面,在首页找到**"图片元数据编辑"**选项,点击进入该功能模块(界面分类清晰,无需多余操作,直接定位核心功能)。

步骤2:批量添加需要修改的照片
-
进入图片元数据编辑界面后,点击界面中的**"添加"**按钮;
-
在弹出的文件浏览器中,选中需要修改位置信息的所有照片,支持批量选择;
-
补充说明:软件支持多种图片格式,包括JPG、PNG、WebP等常见格式,无数量限制,添加多少张即可批量修改多少张,无需逐个处理。

步骤3:进入图片元数据详细设置页面
-
照片添加完成后,在软件界面右侧会自动显示每张照片的各类元数据信息,软件已对元数据进行分类,主要分为"常用元数据"和"更多属性";
-
由于经纬度信息属于"更多属性"范畴,我们需要点击界面上方的**"查看更多"**选项,进入元数据详细设置页面。

步骤4:定位经纬度(Latitude/Longitude)编辑入口
-
进入详细设置页面后,向下拉动滚动条,找到经纬度相关选项,分别是 Latitude(纬度)和 Longitude(经度);
-
可以看到两个选项右侧均带有「编辑按钮」(铅笔图标),点击该按钮即可进入经纬度修改界面。

步骤5:批量修改纬度(Latitude)信息
-
点击 Latitude(纬度)右侧的编辑按钮,弹出经纬度输入弹框;
-
在弹框中输入需要设置的纬度数据(注意:经纬度格式需规范,可根据实际需求输入,例如39.9042° N);

- 输入完成后,点击弹框中的**"批量修改所有文件"**按钮(重点!点击该按钮可将当前设置的纬度应用到所有添加的照片,实现批量修改)。
步骤6:批量修改经度(Longitude)信息
-
按照步骤5的操作,点击 Longitude(经度)右侧的编辑按钮,弹出输入弹框;
-
输入需要设置的经度数据(例如116.4074° E);

- 同样点击「批量修改所有文件」按钮,完成所有照片的经度修改。
提示修改完成后,我们可以看到照片的属性被改成我们需要的值。
三、操作验证与注意事项
1. 验证修改结果
当经度、纬度均修改完成后,软件界面会提示"操作完成",此时返回元数据查看界面,可直接看到所有照片的经纬度已更新为我们设置的信息,修改即时生效。

2. 核心注意事项
(1)经纬度格式:输入时需注意格式规范,可输入十进制格式(如39.9042)或度分秒格式(如39°54′15.12″),确保数据准确;
(2)批量修改确认:每次修改纬度/经度时,务必点击「批量修改所有文件」,否则仅会修改当前选中的单张照片;
(3)原文件修改:该软件修改经纬度时,直接修改原照片的元数据,无需额外保存或导出,修改完成后直接关闭软件即可;
方法二:使用代码的方式实现照片的定位修改
通过 Python 批量修改照片经纬度的核心是操作图片的 EXIF 元数据(照片的元数据信息,包含经纬度、拍摄时间等),推荐使用piexif库(轻量、易上手),兼容 JPG/PNG 等主流图片格式,以下是完整可运行的代码教程。
一、前置准备
-
安装依赖库打开终端 / 命令提示符,执行以下命令安装所需库:
pip install piexif # 处理EXIF元数据 pip install pillow # 辅助读取图片(可选,piexif已依赖) -
核心原理 照片的经纬度存储在 EXIF 的
GPS标签中,格式为「度分秒」的数值组合,代码需将十进制经纬度(如39.9042)转换为 EXIF 标准格式,再写入图片元数据。
二、完整代码(单张 / 批量修改)
python
运行
import piexif
import os
def decimal_to_dms(decimal):
"""
将十进制经纬度转换为EXIF要求的度分秒格式(元组形式)
:param decimal: 十进制经纬度(如39.9042)
:return: (度, 分, 秒)的元组,符合EXIF存储规范
"""
# 取绝对值(方向由后续参数控制)
abs_decimal = abs(decimal)
# 计算度
degrees = int(abs_decimal)
# 计算分
minutes_float = (abs_decimal - degrees) * 60
minutes = int(minutes_float)
# 计算秒
seconds = (minutes_float - minutes) * 60
# 转换为EXIF要求的格式:(数值, 分母),分母固定为1
return ((degrees, 1), (minutes, 1), (round(seconds * 10000), 10000))
def modify_photo_gps(image_path, latitude, longitude, backup_original=True):
"""
修改单张照片的经纬度
:param image_path: 图片文件路径(如"test.jpg")
:param latitude: 纬度(十进制,如39.9042,北纬为正,南纬为负)
:param longitude: 经度(十进制,如116.4074,东经为正,西经为负)
:param backup_original: 是否备份原文件(默认True,避免误操作)
"""
try:
# 1. 备份原文件(可选)
if backup_original:
backup_path = image_path + ".backup"
if not os.path.exists(backup_path):
with open(image_path, "rb") as f1, open(backup_path, "wb") as f2:
f2.write(f1.read())
# 2. 读取图片的EXIF数据(若无则创建空字典)
exif_dict = piexif.load(image_path)
# 3. 转换经纬度为EXIF格式
lat_dms = decimal_to_dms(latitude)
lon_dms = decimal_to_dms(longitude)
# 4. 设置GPS标签(核心:填充经纬度和方向)
gps_ifd = {
# 纬度:度分秒
piexif.GPSIFD.GPSLatitude: lat_dms,
# 纬度方向:N(北纬)/S(南纬)
piexif.GPSIFD.GPSLatitudeRef: "N" if latitude > 0 else "S",
# 经度:度分秒
piexif.GPSIFD.GPSLongitude: lon_dms,
# 经度方向:E(东经)/W(西经)
piexif.GPSIFD.GPSLongitudeRef: "E" if longitude > 0 else "W",
}
# 5. 更新EXIF的GPS数据
exif_dict["GPS"] = gps_ifd
# 6. 将修改后的EXIF写回图片
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, image_path)
print(f"✅ 成功修改:{image_path} | 纬度:{latitude} | 经度:{longitude}")
except Exception as e:
print(f"❌ 失败修改:{image_path} | 错误:{str(e)}")
def batch_modify_photo_gps(folder_path, latitude, longitude):
"""
批量修改文件夹内所有图片的经纬度
:param folder_path: 文件夹路径(如"./photos")
:param latitude: 目标纬度
:param longitude: 目标经度
"""
# 支持的图片格式(可扩展)
support_formats = (".jpg", ".jpeg", ".png", ".webp")
# 遍历文件夹内所有文件
for file_name in os.listdir(folder_path):
file_path = os.path.join(folder_path, file_name)
# 仅处理文件+支持的格式
if os.path.isfile(file_path) and file_name.lower().endswith(support_formats):
modify_photo_gps(file_path, latitude, longitude)
# ==================== 示例调用 ====================
if __name__ == "__main__":
# 示例1:修改单张图片
# modify_photo_gps(
# image_path="./test.jpg", # 你的图片路径
# latitude=39.9042, # 目标纬度(北纬39.9042)
# longitude=116.4074 # 目标经度(东经116.4074)
# )
# 示例2:批量修改文件夹内所有图片
batch_modify_photo_gps(
folder_path="./photos", # 你的图片文件夹路径
latitude=39.9042, # 目标纬度
longitude=116.4074 # 目标经度
)
三、代码使用说明
-
单张修改 取消
示例1的注释,修改image_path为你的图片路径(如"C:/Users/xxx/Desktop/photo.jpg"),设置目标经纬度,运行代码即可。 -
批量修改 取消
示例2的注释,将folder_path改为存放图片的文件夹路径(如"C:/Users/xxx/Desktop/photos"),设置统一的经纬度,运行后会自动处理文件夹内所有 JPG/PNG/WebP 图片。 -
经纬度方向说明
- 北纬:纬度值为正数(如
39.9042),南纬为负数(如-30.0341); - 东经:经度值为正数(如
116.4074),西经为负数(如-118.2437)。
- 北纬:纬度值为正数(如
四、验证修改结果
- 右键点击修改后的图片 → 「属性」→ 「详细信息」;
- 下拉找到「GPS」分类,即可看到修改后的经纬度信息。
五、注意事项
- 格式兼容:PNG/WebP 部分图片可能无 EXIF 数据,代码会自动创建并写入;
- 备份机制 :默认开启原文件备份(后缀
.backup),修改出错可直接恢复; - 权限问题:若提示 "权限不足",需以管理员身份运行 Python 脚本;
- 特殊图片:经过压缩 / 编辑的图片可能丢失 EXIF,修改后会重新生成。
总结
- 核心依赖
piexif库,需先安装,代码兼容 Python3.6+; - 关键步骤是将十进制经纬度转换为 EXIF 要求的「度分秒」格式;
- 支持单张 / 批量修改,自带备份机制,新手也能安全操作。
如果需要处理特殊格式(如 HEIC),可补充安装pyheif库,我可以提供适配代码。