ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 读取照片上的经纬度信息

2021-12-16 21:31:52  阅读:202  来源: 互联网

标签:经纬度 Short Ratio 读取 EXIF tags python Image LatOrLng


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

  import exifread

  import json

  import urllib.request

  Open image file for reading (binary mode)

  f=open(‘001.jpg’, ‘rb’)

  Return Exif tags

  tags=exifreadcess_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=‘

  api.map.baidu/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))

  读取的图片信息大致包含以下内容:

  {'Image ImageWidth': (0x0100) Short=4032 @ 18,

  'Image Model': (0x0110) ASCII=****@ 158,

  'Image ImageLength': (0x0101) Short=3024 @ 42,

  'Image Orientation': (0x0112) Short=Horizontal (normal) @ 54,

  'Image DateTime': (0x0132) ASCII=2021:12:07 03:10:34 @ 166,

  'Image YCbCrPositioning': (0x0213) Short=Centered @ 78,

  'Image ExifOffset': (0x8769) Long=209 @ 90,

  'Image ResolutionUnit': (0x0128) Short=Pixels/Inch @ 102,

  'Image GPSInfo': (0x8825) Long=792 @ 114,

  'Image XResolution': (0x011A) Ratio=72 @ 186,

  'Image YResolution': (0x011B) Ratio=72 @ 194,

  'Image Make': (0x010F) ASCII=Xiaomi @ 202,

  'Thumbnail JPEGInterchangeFormat': (0x0201) Long=928 @ 808,

  'Thumbnail Orientation': (0x0112) Short=Horizontal (normal) @ 820,

  'Thumbnail JPEGInterchangeFormatLength': (0x0202) Long=8039 @ 832,

  'Thumbnail Compression': (0x0103) Short=JPEG (old-style) @ 844,

  'Thumbnail ResolutionUnit': (0x0128) Short=Pixels/Inch @ 856,

  'Thumbnail XResolution': (0x011A) Ratio=72 @ 912,

  'Thumbnail YResolution': (0x011B) Ratio=72 @ 920,

  'Thumbnail ExifImageLength': (0xA003) Long=240 @ 892,

  'Thumbnail ExifImageWidth': (0xA002) Long=320 @ 904,

  'EXIF ISOSpeedRatings': (0x8827) Long=372 @ 219,

  'EXIF ExposureProgram': (0x8822) Short=Program Normal @ 231,

  'EXIF FNumber': (0x829D) Ratio=19/10 @ 599, 'EXIF ExposureTime': (0x829A) Ratio=1/50 @ 607,

  'EXIF Tag 0x9999': (0x9999) ASCII={"sensor_type":"rear","mirror":false} @ 615,

  'EXIF SensingMethod': (0xA217) Short=Not defined @ 279,

  'EXIF SubSecTimeDigitized': (0x9292) ASCII=183622 @ 653,

  'EXIF SubSecTimeOriginal': (0x9291) ASCII=183622 @ 660,

  'EXIF SubSecTime': (0x9290) ASCII=183622 @ 667,

  'EXIF FocalLength': (0x920A) Ratio=197/50 @ 674,

  'EXIF Flash': (0x9209) Short=Flash did not fire, compulsory flash mode @ 339,

  'EXIF LightSource': (0x9208) Short=Unknown @ 351,

  'EXIF MeteringMode': (0x9207) Short=CenterWeightedAverage @ 363,

  'EXIF SceneCaptureType': (0xA406) Short=Standard @ 375,

  'Interoperability InteroperabilityIndex': (0x0001) ASCII=R98 @ 772,

  'Interoperability InteroperabilityVersion': (0x0002) Undefined=[48, 49, 48, 48] @ 784,

  'EXIF InteroperabilityOffset': (0xA005) Long=762 @ 387,

  'EXIF FocalLengthIn35mmFilm': (0xA405) Short=20 @ 399,

  'EXIF MaxApertureValue': (0x9205) Ratio=37/20 @ 682,

  'EXIF DateTimeDigitized': (0x9004) ASCII=2021:12:07 03:10:34 @ 690,

  'EXIF ExposureBiasValue': (0x9204) Signed Ratio=0 @ 710,

  'EXIF ExifImageLength': (0xA003) Long=3024 @ 447,

  'EXIF WhiteBalance': (0xA403) Short=Auto @ 459,

  'EXIF DateTimeOriginal': (0x9003) ASCII=2021:12:07 03:10:34 @ 718,

  'EXIF BrightnessValue': (0x9203) Signed Ratio=-79/50 @ 738,

  'EXIF ExifImageWidth': (0xA002) Long=4032 @ 495,

  'EXIF ExposureMode': (0xA402) Short=Auto Exposure @ 507,

  'EXIF ApertureValue': (0x9202) Ratio=37/20 @ 746,

  'EXIF ComponentsConfiguration': (0x9101) Undefined=YCbCr @ 531,

  'EXIF ColorSpace': (0xA001) Short=sRGB @ 543,

  'EXIF SceneType': (0xA301) Byte=Directly Photographed @ 555,

  'EXIF ShutterSpeedValue': (0x9201) Signed Ratio=5643/1000 @ 754,

  'EXIF ExifVersion': (0x9000) Undefined=0220 @ 579, 'EXIF FlashPixVersion': (0xA000) Undefined=0100 @ 591,

  'JPEGThumbnail': b'\xff\xd8\xf

标签:经纬度,Short,Ratio,读取,EXIF,tags,python,Image,LatOrLng
来源: https://www.cnblogs.com/linjingyg/p/15700093.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有