python 通過exifread讀取照片信息
更新時間:2020年12月24日 17:09:26 作者:gdjlc
這篇文章主要介紹了python 如何通過exifread讀取照片信息,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
通過第三方庫exifread讀取照片信息。
exifread官網(wǎng):https://pypi.org/project/ExifRead/
一、安裝exifread
pip install exifread
二、讀取照片信息,以及根據(jù)經(jīng)緯度通過百度地圖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('照相機(jī)制造商:', tags['Image Make'])
print('照相機(jī)型號:', tags['Image Model'])
print('照片尺寸:', tags['EXIF ExifImageWidth'], tags['EXIF ExifImageLength'])
#獲取經(jīng)度或緯度
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
#調(diào)用百度地圖API通過經(jīng)緯度獲取位置
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') #經(jīng)度
print('緯度:{} 經(jīng)度:{}'.format(lat, lng))
location = getlocation(str(lat), str(lng))
print('位置:{}'.format(location))
以上就是python 通過exifread讀取照片信息的詳細(xì)內(nèi)容,更多關(guān)于python 讀取照片信息的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解Python中如何添加Selenium WebDriver等待
Selenium Web 驅(qū)動程序提供兩種類型的等待, 第一個是隱式等待,第二個是顯式等待,本文主要為大家介紹了Python如何在Selenium Web驅(qū)動程序中添加這兩種等待,需要的可以參考下2023-11-11
VSCode設(shè)置類似Pycharm控制臺運(yùn)行Python顯示中間變量的步驟
這篇文章主要介紹了如何在VSCode中設(shè)置調(diào)試功能,以實現(xiàn)類似于Pycharm在控制臺輸出中間變量的功能,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03
基于Python和Scikit-Learn的機(jī)器學(xué)習(xí)探索
這篇文章主要介紹了基于Python和Scikit-Learn的機(jī)器學(xué)習(xí)探索的相關(guān)內(nèi)容,小編覺得還是挺不錯的,這里分享給大家,供需要的朋友學(xué)習(xí)和參考。2017-10-10
TensorFlow的reshape操作 tf.reshape的實現(xiàn)
這篇文章主要介紹了TensorFlow的reshape操作 tf.reshape的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04

