路由器做服务器做网站,网站建设人员的岗位职责,重庆制作网站培训机构,win10有网但是浏览器网页打不开项目简介#xff1a;本次项目主要学习了如何查找相片中的 Exif 信息#xff0c;并通过 Exif 信息中的 GPS 数据在百度地图中进行定位标点#xff0c;以确定相片的拍摄地点。本次实验的目的旨在通过包含 GPS 信息的相片进行取证调查#xff0c;当然个人娱乐也可以#xff0…项目简介本次项目主要学习了如何查找相片中的 Exif 信息并通过 Exif 信息中的 GPS 数据在百度地图中进行定位标点以确定相片的拍摄地点。本次实验的目的旨在通过包含 GPS 信息的相片进行取证调查当然个人娱乐也可以
一、实验说明
1. Python 版本Python 3.x
2. 知识点
实验中将会学习并实践以下知识点PyQt5 框架基本GUI组件的使用
PyQt5 中信号和槽的用法
PyQt5 中 QWebView 的基本用法
百度地图 URL API 标点功能的用法
利用 piexif 库实现相片 GPS 信息的提取
3. 效果图
二、理论基础
以下内容整理自百度百科、维基百科参考链接
1. Exif
Exif 是一种图像文件格式它的数据存储与 JPEG 格式是完全相同的。实际上 Exif 格式就是在 JPEG 格式头部插入了数码照片的信息包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及 GPS 全球定位系统数据、缩略图等。这节课我们只用到了 Exif 中的 GPS信息将 GPS信息 提取出之后我们就可以用 经纬度 来定位相片拍摄的位置了。
2. PyQt5
PyQt 是由 Phil Thompson 开发的一个创建 GUI 应用程序的工具包。它是 Python 编程语言和 Qt 库的成功融合。目前有两个分支分别是 PyQt5 和 PyQt4。PyQt4 基于 Qt4 开发PyQt5 则是 Python 基于 Qt5 开发的。由于 Qt5 相对于 Qt4 来说增加了很多新特性所以这次实验我们将采用 PyQt5 来实现本次实验的 GUI。
3. 信号与槽
信号 与 槽是 Qt 中的 核心机制。在创建事件循环之后通过建立信号与槽的连接可以实现对象之间的通信。当信号发射时连接的槽函数将会自动执行。在 PyQt5 中信号和槽通过 object.signal.connect() 的方式连接。
4. 百度地图-URI API
百度地图URI API是为开发者提供直接调起百度地图产品百度Web地图、百度地图手机客户端以满足特定业务场景下应用需求的程序接口我们只需按照接口规范构造一条标准的URI就可以在PC和移动端浏览器或移动开发应用中调起百度地图产品进行地图展示和检索、线路查询、导航等功能无需进行复杂的地图功能开发。在本次试验中我们只需要用到百度地图-URI API中的 反地址解析 接口调用该接口可调起PC或Web百度地图经过逆地理编码后以标注形式显示出位置和地址信息详细文档请参考web端URI API。
三、环境配置
工欲善其事必先利其器现在我们就来把我们的开发环境搭建起来。PyQt5 依赖 Qt5,我们先把 Qt 安装上。
新建个下载目录
mkdr download cd download
下载 Qt 5.7.0
wget http://mirror.bit.edu.cn/qtproject/archive/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7.0.run
下载下来可能没有执行权限我们更改一下权限
sudo chmod 777 qt-opensource-linux-x64-5.7.0.run
开始安装一路 next 就可以了
./qt-opensource-linux-x64-5.7.0.run
接下来安装 PyQt5
sudo apt-get install python3-pyqt5
这样安装完 PyQt5 默认不带 QWebKit 模块现在我们需要手动安装一下
sudo apt-get install python3-pyqt5.qtwebkit
至此我们的开发环境就搭建好了。
四、实现步骤
在代码实现之前我们先看一下我们要实现的效果
界面用到了 QLineEdit、QPushButton 以及 QWebView。
QLineEdit 允许用户输入或者编辑单行的纯文本我们用它来显示我们的图片路径。
QPushButon 是一个按钮当用户点击的时候会发射clicked()信号。我们用它来实现一个选择图片的按钮和定位的按钮。
QWebView 是一个可以显示和编辑Web文档的组件相当于一个最简单的浏览器我们用它来加载地图实现定位功能。
整个过程就是使用 piexif 库获取图片 Exif 信息中的 GPS 数据并通过 PyQt5 中的 QWebView显示百度地图并根据百度地图提供的 URI API 在百度地图中定位我们获得的经纬度。
现在来看一下相片定位的效果同学们最好用自己手机拍摄出的图片来测试。因为上传到网络上的图片一般都会进行处理Exif 信息可能会丢失也就无法完成相片拍摄位置的定位。
可以看到地图中标注了一个 红点这个就是我测试相片的拍摄位置。
五、总结
通过本次实验我们应该对 PyQt5 这个 GUI 库有所了解并能了解 GUI 应用程序的开发思路。同时应该了解如何从相片中获取 Exif 信息以及如何用 QWebView 加载百度地图。当然这次实验仅仅利用了 GPS 信息同学们还可以通过其他信息来扩展一下思路写一个有用处的脚本。
本项目实现的完整教程和代码详解可以在实验楼查看立即【开始实验】。
更多Python经典项目Python全部 - 课程
如果您也想通过实验楼课程的形式分享自己的实践经验欢迎投稿给我们项目投稿通道