大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
从照片里面获取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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194770.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...