python 讀取照片上的經緯度信息


  讀取照片信息,以及根據經緯度通過百度地圖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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM