from PIL import Image
from PIL.ExifTags import TAGS
# path to the image or video
imagename = "image.jpg"
# read the image data using PIL
image = Image.open(imagename)
# extract EXIF data
exifdata = image.getexif()
# iterating over all EXIF data fields
for tag_id in exifdata:
# get the tag name, instead of human unreadable tag id
tag = TAGS.get(tag_id, tag_id)
data = exifdata.get(tag_id)
# decode bytes
if isinstance(data, bytes):
data = data.decode()
print(f"{tag:25}: {data}")
ExifVersion : 0220 ComponentsConfiguration : ShutterSpeedValue : (1345, 100) DateTimeOriginal : 2020:08:27 09:43:15 DateTimeDigitized : 2020:08:27 09:43:15 ApertureValue : (185, 100) Brightness ExposureBiasValue : (0, 10) MaxApertureValue : (185, 100) MeteringMode : 2 Flash : 0 FocalLength : (358, 100) UserComment : ColorSpace : 1 ExifImageWidth : 4128 SceneCaptureType : 0 SubsecTime : SubsecTime4 : SubsecTime 04Time1404222222222222222229图像长度:1908 品牌:三星型号:SM-M305F 方向:6 YCbCrPositioning:1 ExposureTime:(1, 2786) ExifInteroperabilityOffset:944 XResolution:(72, 1) FNumber:(190,SceneType):(1002) ImageUniqueID : E13LLLI00PM E13LLMK03PA
ExposureProgram:2 CustomRendered:0 ISOSpeedRatings:40 ResolutionUnit:2 ExposureMode:0 FlashPixVersion:0100 ImageWidth:4128 WhiteBalance:0 软件:M305FDDU5CTF2 DateTime:2020:08:27:05 2020 年 2 月 3 日图像长度:059:2020 年 3 月: 0 饱和度 : 0 锐度 : 0 ExifOffset : 226 MakerNote : 0100 Z@P
使用模块piexif ( pip install piexif
) 您可以获取exif 中的GPS 信息,如下所示。
from pprint import pprint
from PIL import Image
import piexif
codec = 'ISO-8859-1' # or latin-1
def exif_to_tag(exif_dict):
exif_tag_dict = {}
thumbnail = exif_dict.pop('thumbnail')
exif_tag_dict['thumbnail'] = thumbnail.decode(codec)
for ifd in exif_dict:
exif_tag_dict[ifd] = {}
for tag in exif_dict[ifd]:
try:
element = exif_dict[ifd][tag].decode(codec)
except AttributeError:
element = exif_dict[ifd][tag]
exif_tag_dict[ifd][piexif.TAGS[ifd][tag]["name"]] = element
return exif_tag_dict
def main():
filename = 'IMG_2685.jpg' # obviously one of your own pictures
im = Image.open(filename)
exif_dict = piexif.load(im.info.get('exif'))
exif_dict = exif_to_tag(exif_dict)
pprint(exif_dict['GPS'])
if __name__ == '__main__':
main()
结果
{'GPSAltitude': (94549, 14993),
'GPSAltitudeRef': 0,
'GPSDateStamp': '2020:09:04',
'GPSDestBearing': (1061399, 5644),
'GPSDestBearingRef': 'T',
'GPSHPositioningError': (5, 1),
'GPSImgDirection': (1061399, 5644),
'GPSImgDirectionRef': 'T',
'GPSLatitude': ((12, 1), (34, 1), (1816, 100)),
'GPSLatitudeRef': 'N',
'GPSLongitude': ((99, 1), (57, 1), (4108, 100)),
'GPSLongitudeRef': 'E',
'GPSSpeed': (0, 1),
'GPSSpeedRef': 'K',
'GPSTimeStamp': ((13, 1), (2, 1), (4599, 100)),
'GPSVersionID': (2, 2, 0, 0)}
这里exif_to_tag
将 exif 代码转换为更具可读性的标签。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句