当前位置:主页 > 软件编程 > Python代码 >

如何利用python读取图片属性信息

时间:2022-06-19 10:26:20 | 栏目:Python代码 | 点击:

        从照片里面获取GPS信息。可交换图像文件常被简称为EXIF(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,EXIF信息不支持png,webp等图片格式。

        Python中使用ExifRead包读取图片的属性信息,安装方式为:

pip install exifread

        使用exifread.process_file获取图像的信息:

img_path = r"bei_012744.jpg"
f = open(img_path, 'rb')
contents = exifread.process_file(f)
f.close()

        单步调试,contents内容如下:

GPS坐标转换:

        通过exifread获取的经纬度信息格式通常是下面这样的:纬度 [28, 56, 109097/5000] 经度 [112, 38, 436353/10000],转换公式如下:

度 = 度 + 分/60 + 秒/3600 
[28, 56, 109097/5000] = 28 + 56 / 60 + 109097/5000 / 3600 = 28.93939427777778

        因此坐标转换代码如下:

def convert_gps(coord_arr):
    arr = str(coord_arr).replace('[', '').replace(']', '').split(', ')
    d = float(arr[0])
    m = float(arr[1])
    s = float(arr[2].split('/')[0]) / float(arr[2].split('/')[1])
    return float(d) + (float(m) / 60) + (float(s) / 3600)

        完整代码:

import exifread
 
img_path = r"bei_012744.jpg"
f = open(img_path, 'rb')
contents = exifread.process_file(f)
f.close()
 
lon = contents['GPS GPSLongitude'].printable  # 经度
lon = convert_gps(lon)
lat = contents['GPS GPSLatitude'].printable  # 纬度
lat = convert_gps(lat)
altitude = contents['GPS GPSAltitude'].printable  # 相对高度
altitude = float(altitude.split('/')[0]) / float(altitude.split('/')[1])
 
print("GPSLongitude:", lon, "\nGPSLatitude:", lat, "\naltitude:", altitude)

        结果:

GPSLongitude: 112.64545425 
GPSLatitude: 28.93939427777778 
altitude: 58.009
 

您可能感兴趣的文章:

相关文章