其实我们平时拍摄的照片里,隐藏了大量的私密信息,包括 拍摄时间、极其精确 具体的GPS信息,通过读取照片的GPS信息,然后通过百度API将GPS转换成地址,代码中用到的百度API的ak值,可以注册一个百度开发者获得,也可以直接使用本文中提供的。Python分析照片详细拍摄地点源代码需要引入exifread模块,该模块用于分析照片信息,提取照片的GPS等信息。
程序中使用的测试照片,可自行用手机拍摄,拍摄时记得打开手机GPS,这样拍出的照片才会带有GPS信息。程序运行截图:

完整源代码:

# coding=utf-8
'''
作者 : Python代码狂人
微信公众号 : Python代码大全
'''
import exifread
import re
import json
import requests
import os# 转换经纬度格式
def latitude_and_longitude_convert_to_decimal_system(*arg):"""经纬度转为小数, param arg::return: 十进制小数"""return float(arg[0]) + ((float(arg[1]) + (float(arg[2].split('/')[0]) / float(arg[2].split('/')[-1]) / 60)) / 60)# 读取照片的GPS经纬度信息
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}# 通过baidu Map的API将GPS信息转换成地址。
def find_address_from_GPS(GPS):"""使用Geocoding API把经纬度坐标转换为结构化地址。:param GPS::return:"""secret_key = 'zbLsuDDL4CS2U0M4KezOZZbGUY9iWtVf'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]print(content)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"]location = baidu_map_address["result"]["sematic_description"]return formatted_address, province, city, district, locationif __name__ == '__main__':GPS_info = find_GPS_image(pic_path='test.jpg')address = find_address_from_GPS(GPS=GPS_info)print("拍摄时间:" + GPS_info.get("date_information"))print('照片拍摄地址:' + str(address))

更多Python源代码,请微信关注:Python代码大全,

Python分析照片详细拍摄地点源代码(可详细到具体酒店)相关推荐

  1. 用Python读取照片拍摄的详细信息(拍摄时间、地址等)

    前言   其实咱们平时拍摄的照片里隐藏了大量的私密信息,例如:拍摄时间.极其精确的GPS信息等.接下来尝试用python脚本分析照片,获取照片原图的拍摄信息. 1.准备条件   pip install ...

  2. Python实现照片大小调整的详细教程

    Python实现照片大小调整的详细教程 照片大小调整在图片处理过程中是必不可少的一个环节,本文将详细介绍如何使用Python实现对照片大小的调整,以及相应的代码实现. 环境准备 在开始编写代码之前,需 ...

  3. 跳频信号 matlab,time-frequency 关于跳频信号的时频分析过程,介绍的比较详细 matlab 259万源代码下载- www.pudn.com...

    文件名称: time-frequency下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 73 KB 上传时间: 2014-10-16 下载次数: 14 提 ...

  4. chatgpt赋能python:Python微信聊天记录导出:一篇详细的教程

    Python 微信聊天记录导出:一篇详细的教程 聊天记录保留了我们与朋友和家人之间的宝贵记忆,而微信是我们日常生活中最流行的聊天工具之一.但是,微信聊天记录存储在手机中,并且随着时间的推移可能会造成手 ...

  5. python爬虫之bs4模块(超详细)

    python爬虫之bs4模块(超详细) 一.bs4简介 二.使用方法 三.BeautifulSoup四大对象种类 (1)tag (2)NavigableString (3)BeautifulSoup ...

  6. 【python小课堂专栏】python小课堂15 - 史上最详细的包和模块import讲解篇

    python小课堂15 - 史上最详细的包和模块import讲解篇 前言 在大量的代码设计中,我们不可能将所有代码都写在一个.py文件,所以有了包.模块,而为了代码可以重复利用(复用性),就有了类.函 ...

  7. python数据科学系列:pandas入门详细教程

    导读 前2篇分别系统性介绍了numpy和matplotlib的入门基本知识,今天本文自然是要对pandas进行入门详细介绍,通过本文你将系统性了解pandas为何会有数据分析界"瑞士军刀&q ...

  8. python简单代码画曲线图教程-Python绘制折线图和散点图的详细方法介绍(代码示例)...

    本篇文章给大家带来的内容是关于Python绘制折线图和散点图的详细方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.绘制折线图和散点图要用到matplotlib ...

  9. python详细下载安装教程-Python下载并安装图形教程[超级详细]

    现在python语言非常热门,许多小伙伴正在学习python,但是许多小伙伴在安装python时遇到问题. 下面我们要详细介绍下载和安装python的方法. 1. 打开python下载链接,然后单击所 ...

最新文章

  1. 6.微信小程序的如何使用全局属性
  2. kudu接受kafka消息_Kafka入门详解
  3. 系统服务描述表指针查找
  4. busybox 安装mysql_安装busybox
  5. 基于JavaFX的SimpleDateFormat演示程序
  6. Linux的进程/线程/协程系列4:进程知识深入总结:上篇
  7. linux将目录完整备份,Linux自动压缩备份目录文件与恢复
  8. JDK8下载,安装及环境变量的配置
  9. Pyotorch自定义损失函数
  10. oa服务器日常维护,OA系统的日常维护工作有哪些
  11. 自然语言处理(七)——n元语法模型计算句子出现概率
  12. CNN with Attention---channal and spatial attention
  13. dot Net SerialPort 组件关闭时卡住
  14. 万向球头的锁紧结构图_联动锁紧球关节万向杆的制作方法
  15. 1.0django入门01
  16. 谷歌浏览器在新页面打开_如何在Google文档中更改页面方向
  17. ios+透明度+css,ios -css
  18. 世纪互联私有化历时一年后搁浅 清华系上位雷军系白忙
  19. Python-静态网页示例-豆瓣电影Top250
  20. 戒烟产品如何引流?戒烟产品如何寻找客户?戒烟类产品推广方案

热门文章

  1. easyphp mysql_用EasyPHP本地搭建PHP环境 | Wopus
  2. 怎样用excel剔除异常数据_excel如何去除异常值?(excel表格数据异常丢失)
  3. win7系统无法连接局域网服务器,Win7局域网无法访问如何解决?
  4. 分享5款让你工作事半功倍的软件
  5. 软件模拟中美gdp今后几年的变化情况
  6. 成长语录——留给以后的自己
  7. LineRenderer组件
  8. 爬虫技术python爬到女性语音_python爬虫看看虎牙女主播中谁最“顶”步骤详解
  9. 信息系统项目管理师知识总结
  10. React之Ref如何去使用?