python中的data解释_在python中解释来自照片的exif数据的GPS信息

I am writing a small program to get the GPS info of a iphone jpg photo.

The library I am using is the PIL in python. Now I am able to get the GPSInfo, which is something like:

{1: 'N',

2: ((1, 1), (20, 1), (5365, 100)),

3: 'E',

4: ((103, 1), (41, 1), (1052, 100)),

5: 0,

6: (43, 1),

7: ((15, 1), (32, 1), (7, 1)),

16: 'T',

17: (77473, 452),

29: '2013:10:25'}

How can I interpret this? And I notice the tag is not continuous, so is there any cheating sheet which I can refer to in order to get a better understanding of all the number tags and what they mean? Thank you!

UPDATES

Sorry, I have figured it out. In the PIL lib, there is a GPSTAGS.get() function which can help me decode the key in gps info. Thank you guys!

gpsinfo = {}

for key in exif['GPSInfo'].keys():

decode = ExifTags.GPSTAGS.get(key,key)

gpsinfo[decode] = exif['GPSInfo'][key]

print gpsinfo

and here is the result

{'GPSTimeStamp': ((15, 1), (32, 1), (7, 1)),

'GPSImgDirectionRef': 'T',

'GPSImgDirection': (77473, 452),

'GPSLongitude': ((103, 1), (41, 1), (1052, 100)),

'GPSLatitudeRef': 'N', 29: '2013:10:25',

'GPSAltitude': (43, 1),

'GPSLatitude': ((1, 1), (20, 1), (5365, 100)),

'GPSLongitudeRef': 'E',

'GPSAltitudeRef': 0}

解决方案

Use exifread module.

Here is a very helpful gist

import exifread as ef

# barrowed from

# https://gist.github.com/snakeye/fdc372dbf11370fe29eb

def _convert_to_degress(value):

"""

Helper function to convert the GPS coordinates stored in the EXIF to degress in float format

:param value:

:type value: exifread.utils.Ratio

:rtype: float

"""

d = float(value.values[0].num) / float(value.values[0].den)

m = float(value.values[1].num) / float(value.values[1].den)

s = float(value.values[2].num) / float(value.values[2].den)

return d + (m / 60.0) + (s / 3600.0)

def getGPS(filepath):

'''

returns gps data if present other wise returns empty dictionary

'''

with open(filepath, 'r') as f:

tags = ef.process_file(f)

latitude = tags.get('GPS GPSLatitude')

latitude_ref = tags.get('GPS GPSLatitudeRef')

longitude = tags.get('GPS GPSLongitude')

longitude_ref = tags.get('GPS GPSLongitudeRef')

if latitude:

lat_value = _convert_to_degress(latitude)

if latitude_ref.values != 'N':

lat_value = -lat_value

else:

return {}

if longitude:

lon_value = _convert_to_degress(longitude)

if longitude_ref.values != 'E':

lon_value = -lon_value

else:

return {}

return {'latitude': lat_value, 'longitude': lon_value}

return {}

file_path = 'file path of the file'

gps = getGPS(file_path)

print gps

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值