python提取照片坐标信息的实例代码


Posted in Python onAugust 14, 2019

python提取照片坐标信息的代码如下所示:

from PIL import Image
from PIL.ExifTags import TAGS
import os
output="Z://result.csv"
out=open(output,'a')
out.write('lat,lon\n')
fpath="Z://iphonephoto"
for item in os.walk(fpath):
 ob=item[2]
 for i in ob:
  name=fpath+'/'+str(i)
  ret={}
  try:
   img=Image.open(name)
   if hasattr(img,'_getexif'):
    exifinfo=img._getexif()
    if exifinfo !=None:
     for tag,value in exifinfo.items():
      decoded=TAGS.get(tag,tag)
      ret[decoded]=value
      N1 = ret['GPSInfo'][2][0][0]
      N2 = ret['GPSInfo'][2][1][0]
      N3 = ret['GPSInfo'][2][2][0]
      N=int(N1)+int(N2)*(1.0/60)+int(N3)*(1.0/360000)
      E1 = ret['GPSInfo'][4][0][0]
      E2 = ret['GPSInfo'][4][1][0]
      E3 = ret['GPSInfo'][4][2][0]
      E=int(E1)+int(E2)*(1.0/60)+int(E3)*(1.0/360000)
      out.write(str(N)+','+str(E)+'\n')
  except:
   pass
out.close()

PS:Python小列子-读取照片位置

Python exifread

Python利用exifread库来解析照片的经纬度,对接百度地图API显示拍摄地点。

import exifread
import re
import json
import requests
def latitude_and_longitude_convert_to_decimal_system(*arg):
 """
 经纬度转为小数, 作者尝试适用于iphone6、ipad2以上的拍照的照片,
 :param arg:
 :return: 十进制小数
 """
 return float(arg[0]) + ((float(arg[1]) + (float(arg[2].split('/')[0]) / float(arg[2].split('/')[-1]) / 60)) / 60)
def find_GPS_image(pic_path):
 GPS = {}
 date = ''
 with open(pic_path, 'rb') as f:
  tags = exifread.process_file(f)
  for tag, value in tags.items():
   if re.match('GPS GPSLatitudeRef', tag):
    GPS['GPSLatitudeRef'] = str(value)
   elif re.match('GPS GPSLongitudeRef', tag):
    GPS['GPSLongitudeRef'] = str(value)
   elif re.match('GPS GPSAltitudeRef', tag):
    GPS['GPSAltitudeRef'] = str(value)
   elif re.match('GPS GPSLatitude', tag):
    try:
     match_result = re.match('\[(\w*),(\w*),(\w.*)/(\w.*)\]', str(value)).groups()
     GPS['GPSLatitude'] = int(match_result[0]), int(match_result[1]), int(match_result[2])
    except:
     deg, min, sec = [x.replace(' ', '') for x in str(value)[1:-1].split(',')]
     GPS['GPSLatitude'] = latitude_and_longitude_convert_to_decimal_system(deg, min, sec)
   elif re.match('GPS GPSLongitude', tag):
    try:
     match_result = re.match('\[(\w*),(\w*),(\w.*)/(\w.*)\]', str(value)).groups()
     GPS['GPSLongitude'] = int(match_result[0]), int(match_result[1]), int(match_result[2])
    except:
     deg, min, sec = [x.replace(' ', '') for x in str(value)[1:-1].split(',')]
     GPS['GPSLongitude'] = latitude_and_longitude_convert_to_decimal_system(deg, min, sec)
   elif re.match('GPS GPSAltitude', tag):
    GPS['GPSAltitude'] = str(value)
   elif re.match('.*Date.*', tag):
    date = str(value)
 return {'GPS_information': GPS, 'date_information': date}
def find_address_from_GPS(GPS):
 print(GPS)
 """
 使用Geocoding API把经纬度坐标转换为结构化地址。
 :param GPS:
 :return:
 """
 secret_key = 'xxxxxxxxxxxxxxxxxxxx'    # 百度地图创应用的秘钥 
 if not GPS['GPS_information']:
  return '该照片无GPS信息'
 lat, lng = GPS['GPS_information']['GPSLatitude'], GPS['GPS_information']['GPSLongitude']
 baidu_map_api = "http://api.map.baidu.com/geocoder/v2/?ak={0}&callback=renderReverse&location={1},{2}s&output=json&pois=0".format(
  secret_key, lat, lng)
 response = requests.get(baidu_map_api)
 content = response.text.replace("renderReverse&&renderReverse(", "")[:-1]
 baidu_map_address = json.loads(content)
 formatted_address = baidu_map_address["result"]["formatted_address"]
 # province = baidu_map_address["result"]["addressComponent"]["province"]
 # city = baidu_map_address["result"]["addressComponent"]["city"]
 # district = baidu_map_address["result"]["addressComponent"]["district"]
 return formatted_address
GPS_info = find_GPS_image(pic_path='lllll.jpg')  # 照片
address = find_address_from_GPS(GPS=GPS_info)
print(address)

总结

以上所述是小编给大家介绍的python提取照片坐标信息的实例代码 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中subprocess的简单使用示例
Jul 28 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
python实现字符串和字典的转换
Sep 29 Python
python实现AES加密解密
Mar 28 Python
Python 中Django验证码功能的实现代码
Jun 20 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
如何基于Python获取图片的物理尺寸
Nov 25 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
使用python计算三角形的斜边例子
Apr 15 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
Python远程linux执行命令实现
Nov 11 Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 #Python
详解用python计算阶乘的几种方法
Aug 14 #Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 #Python
用Python抢火车票的简单小程序实现解析
Aug 14 #Python
Python定时任务随机时间执行的实现方法
Aug 14 #Python
查看Python依赖包及其版本号信息的方法
Aug 13 #Python
使用python实现unix2dos和dos2unix命令的例子
Aug 13 #Python
You might like
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
jquery插件之easing使用
2010/08/19 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
介绍Python中内置的itertools模块
2015/04/29 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
机械设计职业生涯规划书
2013/12/27 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
学生安全承诺书
2014/05/22 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
Python可视化神器pyecharts绘制水球图
2022/07/07 Python