爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 12722|回复: 2

[经验总结] [已收纳]python之读取照片的时间和经纬度

[复制链接]

新浪微博达人勋

发表于 2019-5-24 16:52:59 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 15195775117 于 2021-1-27 14:31 编辑

一、模块安装
-------------------
python读取照片的经纬度和时间信息需要ExifRead模块,
该模块的下载与说明地址如下:
https://pypi.org/project/ExifRead/#description
点击下载即可:

                               
登录/注册后可看大图

我注意到该模块有版本限制:

                               
登录/注册后可看大图

目前我用的是python3.7,是未测试的版本,经我试验,安装失败
我在Anaconda中将运行环境改为python2:

                               
登录/注册后可看大图

通过pip安装模块,先启动这个:
(经测试,似乎在cmd、prompt里操作没用)

                               
登录/注册后可看大图

输入安装套话:pip install 模块名
(先要改当前路径,输入cd desktop即可把桌面设为当前路径,方便!)
提示安装成功

                               
登录/注册后可看大图


密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-5-24 17:12:09 | 显示全部楼层
本帖最后由 15195775117 于 2019-5-24 19:38 编辑

JPEG模块已废除
Anaconda中也自带了一个读取exif的jpeg模块,不过不知道调用方式,网上说这个模块已经停用了:
自2.6版以来已弃用,该JPEG模块已在Python 3中删除


                               
登录/注册后可看大图



密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-5-24 17:02:29 | 显示全部楼层
本帖最后由 15195775117 于 2019-5-24 19:37 编辑

二、代码&运行
----------------
附件whl文件就是读取照片exif信息的模块文件,
whl即wheel,怪不得网上用python的都说找“轮子”---轮子就是别人写好的工具块,找到了工具块就不用自己重新写了,“轮子”还跟“重新发明轮子”的俗语相通。
值得注意的是,我把运行环境改为python2后,其汉语支持比python3差,估计跟IDL一个水平了,经我试验,python2对汉语文件夹名出现问题,所以,最好别用汉语。
对照片的读取代码参考一下帖子:
https://www.cnblogs.com/kearney908/p/9187307.html
代码如下:

def exifread_infos(photo):
    import exifread
    #加载 ExifRead 第三方库  https://pypi.org/project/ExifRead/
    #获取照片时间、经纬度信息
    #photo参数:照片文件路径

    # Open image file for reading (binary mode)
    f = open(photo, 'rb')
    # Return Exif tags
    tags = exifread.process_file(f)

    try:
        #拍摄时间
        EXIF_Date=tags["EXIF DateTimeOriginal"].printable
        #纬度
        LatRef=tags["GPS GPSLatitudeRef"].printable
        Lat=tags["GPS GPSLatitude"].printable[1:-1].replace(" ","").replace("/",",").split(",")
        Lat=float(Lat[0])+float(Lat[1])/60+float(Lat[2])/float(Lat[3])/3600
        if LatRef != "N":
            Lat=Lat*(-1)
        #经度
        LonRef=tags["GPS GPSLongitudeRef"].printable
        Lon=tags["GPS GPSLongitude"].printable[1:-1].replace(" ","").replace("/",",").split(",")
        Lon=float(Lon[0])+float(Lon[1])/60+float(Lon[2])/float(Lon[3])/3600
        if LonRef!="E":
            Lon=Lon*(-1)
        f.close()
    except :
        return "ERROR:请确保照片包含经纬度等EXIF信息。"
    else:
        return EXIF_Date,Lat,Lon
photo=r'C:\Users\Administrator\Desktop\wy\35369511.jpg'
ex=exifread_infos(photo)
print(type(ex))
print(ex)
print(ex[-1])



输出结果:<type 'tuple'>
('2019:05:23 18:51:01', 31.873989583333334, 117.24054513888889)
117.240545139
成功输出,撒花!


ExifRead-2.1.2-py2-none-any.whl

46.79 KB, 下载次数: 1, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表