一、图像EXIF信息
介绍
EXIF(Exchangeable image file format,可交换图像文件格式)是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,如拍摄时间、图像分辨率、感光值、GPS坐标等。
Exif最初由日本电子工业发展协会在1996年制定,版本为1.0。1998年,升级到2.1,增加了对音频文件的支持。2002年3月,发表了2.2版。
Exif可以附加于JPEG、TIFF、RIFF等文件之中,为其增加有关数码相机拍摄信息的内容和索引图或图像处理软件的版本信息。
Exif信息是可以被任意编辑的,因此只有参考的功能。Exif信息以0xFFE1作为开头标记,后两个字节表示Exif信息的长度。所以Exif信息最大为64 kb,而内部采用TIFF格式。
查看EXIF信息
windows文件属性
注:本文处理图片针对原图Windows7以上操作系统具备对Exif的原生支持,Windows系统下,可以通过鼠标右键点击图片打开菜单,点击属性并切换到详细信息标签下,即可直接获取图片的EXIF信息。
在线查看器
图虫EXIF查看器 https://exif.tuchong.com/
改图宝 https://www.gaitubao.com/exif
我爱斗图(一个表情包网站 ) https://www.52doutu.cn/tools/exif
exifread 库
exifread模块为python读取图片EXIF信息的库。
exifread模块的下载地址:https://pypi.python.org/pypi/ExifRead 安装exifread库
pip install exifread
主要使用process_file函数进行解析,传入图片文件对象,返回一个包含图片信息的字典。其中,exif中GPS格式为DMS格式,即:D(degree,度)、M(minute,分)、S(second,秒),因此要进行转换才能得到常见的double类型的经纬度值。下面就用python + exifread读取图片的详细信息。
import exifread
with open(IMG_20190618_163339.jpg, rb) as f:
exif_dict = exifread.process_file(f)
print(拍摄时间:, exif_dict[EXIF DateTimeOriginal])
print(照相机制造商:, exif_dict[Image Make])
print(照相机型号:, exif_dict[Image Model])
print(照片尺寸:, exif_dict[EXIF ExifImageWidth], exif_dict[EXIF ExifImageLength])
# 经度
lon_ref = exif_dict["GPS GPSLongitudeRef"].printable
lon = exif_dict["GPS GPSLongitude"].printable[1:-1].replace(" ", "").replace("/", ",").split(",")
lon = float(lon[0]) + float(lon[1]) / 60 + float(lon[2]) / float(lon[3]) / 3600
if lon_ref != "E":
lon = lon * (-1)
# 纬度
lat_ref = exif_dict["GPS GPSLatitudeRef"].printable
lat = exif_dict["GPS GPSLatitude"].printable[1:-1].replace(" ", "").replace("/", ",").split(",")
lat = float(lat[0]) + float(lat[1]) / 60 + float(lat[2]) / float(lat[3]) / 3600
if lat_ref != "N":
lat = lat * (-1)
print(照片的经纬度:, (lat, lon))
for key in exif_dict:
print("%s: %s" % (key, exif_dict[key]))
输出:
拍摄时间: 2019:06:18 16:33:40
照相机制造商: HUAWEI
照相机型号: HRY-AL00Ta
照片尺寸: 3968 2976
照片的经纬度: (13.787098884444445, 100.62936401361111)
Image ImageWidth: 3968
Image ImageLength: 2976
Image BitsPerSample: [8, 8, 8]
Image Make: HUAWEI
Image Model: HRY-AL00Ta
Image Orientation: 0
Image XResolution: 72
Image YResolution: 72
Image ResolutionUnit: Pixels/Inch
Image Software: HRY-AL00Ta 9.0.1.130(C00E130R4P1)
Image DateTime: 2019:06:18 16:33:40
Image YCbCrPositioning: Centered
Image ExifOffset: 290
GPS GPSVersionID: [2, 2, 0, 0]
GPS GPSLatitudeRef: N
GPS GPSLatitude: [13, 47, 847249/62500]
GPS GPSLongitudeRef: E
GPS GPSLongitude: [100, 37, 45710449/1000000]
............................省略
二、经纬度转地址
要想将图片中的经纬度信息转换为详细地址,同样也有很多方法,比如在线查询、地图API或者利用python的地理位置信息库:geopy。
在线查询
GPS查询网址1 http://www.gpsspg.com/maps.htm
GPS查询网址2 http://www.gzhatu.com/dingwei.html
地球在线 https://www.earthol.com/
没错,这张图片是我在泰国拍的
可以看下这篇文章
fahai:python获取原图GPS信息,轻松得到你的活动轨迹34 赞同 · 2 评论文章