python 通过图片(原图)精确获取图片拍摄的位置
想要悄悄的获取某人的位置,只需通过拍摄的照片,就能可以实现。
此方法需要用到识别图片元数据的库。
pip3 install exifread
1. 粗获取
获取拍摄照片的经纬度,时间,设备信息。这里使用的照片需是拍摄的原图,图片路径本文是放在了与运行程序相同的文件夹。
实现代码如下:
__author__ = 'Jeff.xie'
import exifread
# 获取照片位置
class Image_Location():
def __init__(self, image_path):
self.img_path = image_path
def lati_long_date(self, data):
"""
对经纬度进行处理,保留6位小数
"""
# 删除左右括号,最后以逗号分隔为一个列表
data_list_tmp = str(data) .replace('[', '').replace(']', '').split(',')
# 循环取出每个元素,删除元素两边的空格,得到一个新列表
data_list = [date.strip() for date in data_list_tmp]
print(data_list)
# 替换秒的值
data_tmp = data_list[-1].split('/')
# 秒的值
data_sec = int(data_tmp[0]) / int(data_tmp[1]) / 3600
# 替换分的值
data_tmp = data_list[-2]
# 分的值
data_minute = int(data_tmp) / 60
# 度的值
data_degree = int(data_list[0])
# 由于高德API只能识别到小数点后的6位
# 需要转换为浮点数,并保留为6位小数
result = "%.6f" % (data_degree + data_minute + data_sec)
return float(result)
def get_image_exif(self):
"""
获取图片的属性:纬度,经度,拍摄时间等
"""
# 通过exifread获取图片的属性
img_read = open(self.img_path, 'rb')
img_exif = exifread.process_file(img_read)
# 读取到的属性
if img_exif:
for exif in img_exif:
# 纬度
if exif == "GPS GPSLatitude":
latitude = img_exif["GPS GPSLatitude"]
print(latitude)
# 纬度的方向
elif exif == "GPS GPSLatitudeRef":
latitude_direction = img_exif["GPS GPSLatitudeRef"]
# 经度
elif exif == "GPS GPSLongitude":
longitude = img_exif["GPS GPSLongitude"]
# 经度方向
elif exif == "GPS GPSLongitudeRef":
longitude_direction = img_exif["GPS GPSLongitudeRef"]
# 拍摄时间
elif exif == "EXIF DateTimeDigitized":
take_time = img_exif["EXIF DateTimeDigitized"]
# 拍摄设备
elif exif == "Image Make":
take_equipment = img_exif["Image Make"]
# 拍摄型号
elif exif == "Image Model":
take_model = img_exif["Image Model"]
# 对获取的经纬度信息进一步处理
if latitude and longitude:
latitude_date = self.lati_long_date(latitude)
longitude_date = self.lati_long_date(longitude)
print("纬度为:", latitude_date)
print("经度为:", longitude_date)
print("拍摄时间为:", take_time)
print("拍摄设备为: ", take_equipment)
print("拍摄型号为:", take_model)
else:
print("图像信息为空,可能是上传的不是原图")
if __name__ == '__main__':
path=r"C:\Users\jeff.xie\Desktop\aa\IMG_20210815_175252.jpg"
#图片一定要是从手机里面直接拷贝到电脑,通过微信发到电脑的图片无法正常读取
location = Image_Location(path)
location.get_image_exif()
输出结果如下所示:
[22, 35, 559967/10000]
['22', '35', '559967/10000']
['114', '2', '130343/10000']
纬度为: 22.598888
经度为: 114.036954
拍摄时间为: 2021:08:15 17:52:53
拍摄设备为: Xiaomi
拍摄型号为: Redmi Note 7 Pro
根据坐标获取在地图上查找位置
1.首先在电脑上打开百度地图,在下方找到【地图开发平台】
2.点击地图开放平台进入百度地图开放平台界面,找到【开发文档】,点击开发文档弹出下拉菜单,在开发者工作里找到【坐标拾取器】。
3.点击进入拾取坐标系统,勾选【坐标反查】,接下来在输入框内输入经纬度,即可查询到地理位置了。
python 通过图片(原图)精确获取图片拍摄的位置,时间,设备等信息-阿里云开发者社区
python 通过图片(原图)精确获取图片拍摄的位置相关推荐
- Java通过图片url地址获取图片base64位字符串的两种方式
工作中遇到通过图片的url获取图片base64位的需求.一开始是用网上的方法,通过工具类Toolkit,虽然实现的代码比较简短,不过偶尔会遇到图片转成base64位不正确的情况,至今不知道为啥. 之后 ...
- springboot获取静态图片路径_Springboot通过图片路径形式获取图片
Springboot通过图片路径形式获取图片 一致以来都是用 http://127.0.0.1:8888/getPhoto?imgUrl=1.jpg 的形式获取数据,今天突然要 http://127. ...
- python 通过图片(原图)精确获取图片拍摄的位置,时间,设备等信息
想要悄悄的获取某人的位置,只需通过她拍摄的照片,就能可以实现.此方法需要用到识别图片元数据的库.这里操作是在虚拟机ubuntu上,使用python最好是在3.6及以上. pip3 install ex ...
- Android:加载网图时精确获取图片格式
一.开始挖坑 项目中有一个点击查看大图的需求,并且在大图模式下支持手势缩放,所以,我们必然会用到 chrisbanes 大神的 PhotoView,主要使用的是其中的PhotoView 和 Photo ...
- python提高图片分辨率_python 获取图片分辨率的方法
python 获取图片分辨率的方法 pil版: from PIL import Image filename = r'E:\data\yangben\0.jpg' img = Image.open(f ...
- python保存图片并命名_python 获取图片并自动命名保存
# -* - coding: UTF-8 -* - #导入第三方库 import urllib from bs4 import BeautifulSoup import requests import ...
- 图片管理之获取图片列表数据
图片管理 在图片表中我们需要对图片数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作 获取图片列表数据 接口分析 请求方式: GET /meiduo_admi ...
- android 图片拍照,Android获取图片拍照时间
为什么写这篇文章是因为今早有个需求需要获取图片拍照时的时间进行一些处理,有些方法参数名忘记了,所以谷歌百度了一下,Android 图片 时间,Android 图片 拍照 时间,这几个关键字居然无法搜索 ...
- 阿里云使用js 实现OSS图片上传、获取OSS图片列表、获取图片外网访问地址(读写权限私有、读写权限公共);...
详情请参考:https://help.aliyun.com/document_detail/32069.html?spm=a2c4g.11186623.6.763.ZgC59a 或者https://h ...
最新文章
- centos7 解决chrome提示您的连接不是私密连接的方法
- C#操作IIS站点 Microsoft.Web.Administration.dll
- OCR识别-python版(一)
- 【STM32】OLED简介
- java如何连接mysql_Java如何连接数据库
- 腾讯再出新招!社交新产品“有记”已上线?
- 地域和地方的区别_区域经济学入门级名词内涵的探索(区域、地域、地区、空间和区位的区别与联系)...
- python实现bt下载器_使用Python实现BT种子和磁力链接的相互转换
- Little VGL + code::blocks + 模拟器
- 记录一次rpc 漏洞补丁查看
- firefox浏览器上安装selenium IDE插件
- bzoj 3772 :精神污染 线段树+打标记 or 主席树
- 华硕主板开机提示按F1怎么办?华硕主板开机提示按F1的解决方法
- Java从入门到精通章节练习题——第六章
- VirtualBox 解决不能为虚拟电脑打开一个新任务问题
- c语言单片机温度调节系统设计,基于单片机的温度控制系统的设计
- 计算机c盘那个是系统文件夹,C盘有哪些文件可以删除?可以手动删除的几个C盘中的文件夹...
- 《神经科学-探索脑(第2版)》部分笔记
- 北京内推 | 中科院自动化所招聘机器视觉感知与理解算法工程师/实习生
- 使用DB2 pureXML管理蛋白质数据库