你有没有想过,手机里那些看似普通的照片,其实暗藏了不少“秘密”?除了画面本身,每张照片的文件中还记录着一系列拍摄参数——相机型号、快门速度、光圈大小,甚至还有拍摄地点的经纬度坐标。这些隐藏数据属于EXIF信息的一部分,平时看不见摸不着,但在某些场景下却能派上大用场。

比如,有人想整理旅行照片、按地点归档;有人发图前担心隐私泄露、想清除或更改定位;还有人因为工作需求,需要为一批图片批量写入指定的经纬度数据。图片的GPS信息怎么查看和修改这个问题,其实有好几种不同的解决办法,有的适合懂编程的朋友,有的则对普通用户更友好。今天我们就来逐一梳理,找到适合你的思路。

在正式展开方法之前,先提醒一句:修改图片信息前,建议养成备份原图的习惯。毕竟有些操作会直接覆盖原文件,万一手误改错了,可没有后悔药吃。

百家号头图

方法一:用汇帮元数据编辑器修改GPS信息

如果你不想碰代码,又希望有一个能批量处理的操作方案,汇帮元数据编辑器是一个比较省心的选择。它是一款运行在Windows系统上的本地软件,支持直接修改图片的EXIF数据,包括拍摄时间、相机型号以及经纬度等GPS信息。

具体操作流程如下:

第一步:打开软件,进入图片元数据编辑功能

在电脑上启动已安装好的汇帮元数据编辑器,主界面上能看到多个功能入口,此时选择“图片元数据编辑”模块即可。

软件主界面第二步:添加需要修改的图片

把需要修改经纬度的图片导入软件。它支持一次性添加多张图片,也就是说,如果你手里有一批照片都需要调整位置信息,可以批量操作,效率会高出不少。

添加图片第三步:查看图片元数据

图片添加成功后,软件右侧会自动展示这张图片的各类元数据信息。如果显示的字段有限,点击“查看更多”按钮,就能看到更完整的参数列表。

查看更多元数据第四步:定位经度、纬度属性

在下拉的属性列表中,找到“经度”和“纬度”这两个项目,它们右侧各有一个编辑按钮。点击对应按钮,就可以对数值进行修改。

找到经纬度属性第五步:获取目标地点的经纬度数值

这里有一个比较关键又容易卡住的细节——怎么知道自己想要的经纬度到底是多少?其实不用自己算,打开任意一个地图工具就行。在搜索引擎中搜索“经纬度拾取器”,找到支持坐标显示的地图服务,在地图上找到你指定的地点并点击,页面上会自动显示对应的经度和纬度数值,复制下来备用即可。

使用经纬度拾取工具第六步:填入数值,批量修改

回到软件界面,分别在经度和纬度的弹出框中输入刚才复制到的数值,确认无误后,点击“批量修改所有图片”按钮,软件就会自动完成所有图片的坐标写入。

输入经纬度数值批量修改完成等待系统提示操作成功,此时图片的定位数据已经被改写。如果想确认结果,可以打开图片详情或属性面板,查看经纬度是否已经更新为你填写的数值。

查看修改结果这套流程整体下来不用写一行代码,属于“所见即所得”的操作方式。如果你手头的图片比较多,或者你平时不太熟悉命令行工具,这种可视化的软件工具会更顺手。

方法二:用Python修改EXIF中的GPS数据

如果你具备一定的编程基础,或者经常需要批量处理图片、希望在流程中实现更高程度的自动化,那么用Python来修改EXIF信息也是个值得了解的路子。这种方式胜在灵活,想改哪些字段、批量跑多少张图片,全凭代码说了算。

准备工作

需要先安装两个Python库:piexifPillowpiexif专门负责处理EXIF数据,Pillow则是Python中常用的图像处理库。安装命令如下:

pip install piexif pillow

核心代码实现

下面是一段能够修改GPS坐标、拍摄时间、相机参数等信息的完整代码逻辑:

from fractions import Fraction
import piexif
from PIL import Image

def to_degrees(value):
    """将十进制度数转换为EXIF使用的度分秒格式"""
    d = int(value)
# 获取度数
    m = int((value - d) * 60)
# 计算分数中的分钟
    s = (value - d - m / 60) * 3600
# 计算剩余秒数
    return [(d, 1), (m, 1), to_fraction(s)]

def to_fraction(value):
    """将浮点数转换为分数,EXIF中以分数存储较常见"""
    f = Fraction(value).limit_denominator()
    return (f.numerator, f.denominator)

def set_exif_data(img_path, output_path, longitude, latitude, altitude,
                  focal_length, aperture_value, iso_speed,
                  camera_make, camera_model, date_taken):
    img = Image.open(img_path)
    exif_dict = piexif.load(img.info['exif']) if 'exif' in img.info else {"0th": {}, "Exif": {}, "GPS": {}}
# GPS经度
    exif_dict['GPS'][piexif.GPSIFD.GPSLongitude] = to_degrees(longitude)
    exif_dict['GPS'][piexif.GPSIFD.GPSLongitudeRef] = "E" if longitude >= 0 else "W"
# GPS纬度
    exif_dict['GPS'][piexif.GPSIFD.GPSLatitude] = to_degrees(latitude)
    exif_dict['GPS'][piexif.GPSIFD.GPSLatitudeRef] = "N" if latitude >= 0 else "S"
# GPS海拔
    exif_dict['GPS'][piexif.GPSIFD.GPSAltitude] = (to_fraction(altitude) if altitude else (0, 1))
    exif_dict['GPS'][piexif.GPSIFD.GPSAltitudeRef] = 0 if altitude >= 0 else 1
# 相机拍摄参数
    exif_dict['Exif'][piexif.ExifIFD.FocalLength] = to_fraction(focal_length)
    exif_dict['Exif'][piexif.ExifIFD.FNumber] = to_fraction(aperture_value)
    exif_dict['Exif'][piexif.ExifIFD.ISOSpeedRatings] = iso_speed
# 相机设备信息
    exif_dict['0th'][piexif.ImageIFD.Make] = camera_make.encode('utf-8')
    exif_dict['0th'][piexif.ImageIFD.Model] = camera_model.encode('utf-8')
# 拍摄时间
    exif_dict['Exif'][piexif.ExifIFD.DateTimeOriginal] = date_taken.encode('utf-8')
    
    exif_bytes = piexif.dump(exif_dict)
    img.save(output_path, exif=exif_bytes, quality=100)
# 示例:使用函数修改一张照片的信息
set_exif_data(
    'F:/photos/DSC_6571.jpg',
    './DSC_6572.jpg',
    110.481661,
# 经度
    29.099569,
# 纬度
    2100,
# 海拔(米)
    28,
# 焦距(mm)
    2.8,
# 光圈
    400,
# ISO
    "NIKON CORPORATION",
    "NIKON D7100",
    "2024:06:11 12:15:43"
)

代码逻辑简述

  • to_degrees() 负责将百度的经纬度小数形式,换算成EXIF标准要求的度分秒结构;
  • to_fraction() 会把浮点数转换为分数形式,这符合EXIF数据的存储规则;
  • 主函数 set_exif_data() 是核心写入入口,通过 piexif.dump() 将修改后的信息重新打包并保存到输出图片中。

Python代码示例对于技术人员来说,这个方案的扩展性很好——调整代码中的参数字段,还可以自由增加其他EXIF条目。不过坦白讲,Python方案的门槛确实摆在那里,如果没有编程经验,光是调试环境、运行脚本就可能劝退不少人。这个方案更适合有技术背景、需要高度定制化的用户。

方法三:其他常用修改工具一览

除了上面两种思路,还有几款工具也可以实现GPS信息的查看与修改,这里简单介绍一下它们的操作特点,供大家参考。

MagicEXIF元数据编辑器

这是一款功能比较全面的EXIF编辑工具,界面是图形化的,适合普通用户使用。

打开软件后,点击工具栏中的“打开文件”按钮载入一张照片。以iPhone拍摄的照片为例,切换到“GPS信息”选项卡,可以看到列表中展示的GPS数据,右侧通常还会显示地图预览。

打开文件GPS信息面板如果照片本身没有GPS数据,地图区域会显示“无可用地理数据”,此时可以通过工具栏中的“增添项”按钮,在弹出对话框中添加所需的GPS字段。

增添项功能在“显示”下拉列表中选择“GPS地理信息”,勾选必要的几项数据,点击“确认添加”。添加完成的新项目会以绿色高亮显示,接下来就能直接修改其中的坐标数值了。

添加GPS字段修改结果展示MagicEXIF比较适合批量修改需求不大的普通用户,上手速度快,功能覆盖也比较全面。

另一种使用GPS坐标写入工具的方式

网上还有一个叫“GPS写入照片”的小工具,通过Excel格式的pos文件配合操作。步骤大致是:打开工具 → 选择数据转换 → 点击“GPS写入照片” → 在百度地图坐标拾取器中查询目标位置坐标 → 将照片文件夹和pos文件路径选好 → 设置照片列、经度列、纬度列、高度列的对应关系 → 点击“一键写入”完成。

打开定位工具坐标拾取界面设置对应列一键写入设置写入完成查看修改效果Surfer软件中的底图坐标调整

如果在专业制图软件Surfer中操作底图,也可以通过修改坐标轴的范围来实现经纬度的标注调整——通过“对象管理器”选择底图后,在属性中更改X轴和Y轴的最大最小值,将其设定为具体的经纬度范围即可。这属于地理制图场景下的坐标校正,对普通照片的EXIF信息修改也有一定参考价值。

Surfer底图操作添加底图坐标轴刻度属性编辑修改坐标

查看GPS信息的基础方法

说完了如何修改,很多人可能还会问:在修改之前,我怎么查看一张图片现有的GPS数据呢?其实有很简单的操作。

Windows系统下,直接右键点击图片文件,选择“属性”,切换到“详细信息”选项卡,就能看到部分EXIF信息,包括经纬度坐标(如果图片本身带有GPS数据的话)。

macOS系统下,用“预览”应用打开图片,点击菜单栏的“工具”→“显示检查器”,或直接使用快捷键Command+I,在打开的窗口中切换到“更多信息”标签页,同样可以看到位置信息及地图预览。

手机上也可以用一些专业的图片信息查看App,这里不直接点名,大家可以在应用商店搜索“EXIF查看器”之类的关键词自行选择,注意挑选下载量大、评分高的产品即可。

注意事项与常见问题

在实际操作中,有几个容易被忽略的细节值得提出来:

GPS坐标的格式差异。 不同工具或地图平台显示坐标的方式不完全一样,有的直接显示十进制度数(如110.481661),有的则显示度分秒(如110°28‘54")。这两种格式之间需要换算,填写时务必搞清楚你复制下来的数据属于哪种格式,避免填错后造成定位偏差。

原图备份意识。 多数桌面软件在保存时会直接覆盖原文件,虽然方便,但如果修改后发现数值不对,再想找回原始数据就麻烦了。养成先复制一份原图的习惯,能在很大程度上规避不必要的风险。

关于隐私的一点提醒。 这里也提醒一下大家:日常在社交平台发布照片前,如果想保留照片的画质又不想暴露家庭住址等敏感位置信息,可以考虑把EXIF中的GPS数据清除干净再上传。虽然不少社交软件在发送时会自动压缩并剥离元数据,但不要盲目认为所有平台都会做这一步。

总结:如何选择适合自己的方法?

回到“图片的GPS信息怎么查看和修改”这个问题上,其实并没有放之四海而皆准的答案,关键看你自己的情况更适合哪条路:

  • 普通用户,偶尔改一两张图,不想动代码:选汇帮元数据编辑器或MagicEXIF这类图形化工具都比较稳妥,界面直观、操作路径短,几分钟就能完成修改。如果你需要批量处理较多图片,汇帮的一键批量功能也会比逐张修改更高效。
  • 有技术背景,追求自动化或特定功能:Python脚本是性价比高的方案,改代码就能复用,适合大量图片需要统一处理的场景,但前提是你得有耐心处理环境配置这类基础问题。
  • 专业制图或地理信息相关场景:Surfer等专业工具中的坐标调整方式更有针对性,不过适用范围相对垂直。

希望这篇文章能帮你弄清楚图片的GPS信息怎么查看和修改。如果你之前一直用某一款工具觉得还挺顺手的,也欢迎在评论区聊聊自己的使用体验,让更多人少走弯路。