Python 读取照片的信息:拍摄时间、拍摄设备、经纬度等,以及根据经纬度通过

系统 1979 0

通过第三方库exifread读取照片信息。
exifread官网:https://pypi.org/project/ExifRead/

一、安装exifread
pip install exifread

二、读取照片信息,以及根据经纬度通过百度地图API获取位置

 

            
              import
            
            
               exifread

            
            
              import
            
            
               json

            
            
              import
            
            
               urllib.request


            
            
              #
            
            
               Open image file for reading (binary mode)
            
            
f = open(
            
              '
            
            
              001.jpg
            
            
              '
            
            , 
            
              '
            
            
              rb
            
            
              '
            
            
              )


            
            
              #
            
            
               Return Exif tags
            
            
tags =
            
               exifread.process_file(f)


            
            
              '''
            
            
              
#打印所有照片信息
for tag in tags.keys():    
    print("Key: {}, value {}".format(tag, tags[tag]))

            
            
              '''
            
            
              #
            
            
              打印照片其中一些信息
            
            
              print
            
            (
            
              '
            
            
              拍摄时间:
            
            
              '
            
            , tags[
            
              '
            
            
              EXIF DateTimeOriginal
            
            
              '
            
            
              ])

            
            
              print
            
            (
            
              '
            
            
              照相机制造商:
            
            
              '
            
            , tags[
            
              '
            
            
              Image Make
            
            
              '
            
            
              ])

            
            
              print
            
            (
            
              '
            
            
              照相机型号:
            
            
              '
            
            , tags[
            
              '
            
            
              Image Model
            
            
              '
            
            
              ])

            
            
              print
            
            (
            
              '
            
            
              照片尺寸:
            
            
              '
            
            , tags[
            
              '
            
            
              EXIF ExifImageWidth
            
            
              '
            
            ], tags[
            
              '
            
            
              EXIF ExifImageLength
            
            
              '
            
            
              ])


            
            
              #
            
            
              获取经度或纬度
            
            
              def
            
            
               getLatOrLng(refKey, tudeKey):
    
            
            
              if
            
             refKey 
            
              not
            
            
              in
            
            
               tags:
        
            
            
              return
            
            
               None
    ref
            
            =
            
              tags[refKey].printable
    LatOrLng
            
            =tags[tudeKey].printable[1:-1].replace(
            
              "
            
            
              "
            
            ,
            
              ""
            
            ).replace(
            
              "
            
            
              /
            
            
              "
            
            ,
            
              "
            
            
              ,
            
            
              "
            
            ).split(
            
              "
            
            
              ,
            
            
              "
            
            
              )
    LatOrLng
            
            =float(LatOrLng[0])+float(LatOrLng[1])/60+float(LatOrLng[2])/float(LatOrLng[3])/3600
    
            
              if
            
             refKey == 
            
              '
            
            
              GPS GPSLatitudeRef
            
            
              '
            
            
              and
            
             tags[refKey].printable != 
            
              "
            
            
              N
            
            
              "
            
            
              :
        LatOrLng
            
            =LatOrLng*(-1
            
              )
    
            
            
              if
            
             refKey == 
            
              '
            
            
              GPS GPSLongitudeRef
            
            
              '
            
            
              and
            
             tags[refKey].printable != 
            
              "
            
            
              E
            
            
              "
            
            
              :
        LatOrLng
            
            =LatOrLng*(-1
            
              )
    
            
            
              return
            
            
               LatOrLng


            
            
              #
            
            
              调用百度地图API通过经纬度获取位置
            
            
              def
            
            
               getlocation(lat,lng):   
    url 
            
            = 
            
              '
            
            
              http://api.map.baidu.com/geocoder/v2/?location=
            
            
              '
            
             + lat + 
            
              '
            
            
              ,
            
            
              '
            
             + lng + 
            
              '
            
            
              &output=json&pois=1&ak=申请的百度地图KEY
            
            
              '
            
            
              
    req 
            
            =
            
               urllib.request.urlopen(url)
    res 
            
            = req.read().decode(
            
              "
            
            
              utf-8
            
            
              "
            
            
              ) 
    str 
            
            =
            
               json.loads(res)
    
            
            
              #
            
            
              print(str)
            
            
    jsonResult = str.get(
            
              '
            
            
              result
            
            
              '
            
            
              )
    formatted_address 
            
            = jsonResult.get(
            
              '
            
            
              formatted_address
            
            
              '
            
            
              )
    
            
            
              return
            
            
               formatted_address

lat 
            
            = getLatOrLng(
            
              '
            
            
              GPS GPSLatitudeRef
            
            
              '
            
            ,
            
              '
            
            
              GPS GPSLatitude
            
            
              '
            
            ) 
            
              #
            
            
              纬度
            
            
lng = getLatOrLng(
            
              '
            
            
              GPS GPSLongitudeRef
            
            
              '
            
            ,
            
              '
            
            
              GPS GPSLongitude
            
            
              '
            
            ) 
            
              #
            
            
              经度
            
            
              print
            
            (
            
              '
            
            
              纬度:{} 经度:{}
            
            
              '
            
            
              .format(lat, lng))

location 
            
            =
            
               getlocation(str(lat), str(lng))

            
            
              print
            
            (
            
              '
            
            
              位置:{}
            
            
              '
            
            .format(location))
          

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论