Reading EXIF¶
New in version 0.3.0.
Image.metadata
contains metadata
of the image including EXIF. These are prefixed by 'exif:'
e.g. 'exif:ExifVersion'
, 'exif:Flash'
.
Here’s a straightforward example to access EXIF of an image:
exif = {}
with Image(filename='wandtests/assets/beach.jpg') as image:
exif.update((k[5:], v) for k, v in image.metadata.items()
if k.startswith('exif:'))
Note
You can’t write into Image.metadata
.
Image Profiles¶
Although wand provides a way to quickly access profile attributes through
Image.metadata
, ImageMagick is not a
tag editor. Users are expected to export the profile payload, modify as needed,
and import the payload back into the source image. Payload are byte-arrays, and
should be treated as binary blobs.
Image profiles can be imported, extracted, and deleted with
Image.profiles
dictionary:
with Image(filename='wandtests/assets/beach.jpg') as image:
# Extract EXIF payload
if 'EXIF' in image.profiles:
exif_binary = image.profiles['EXIF']
# Import/replace ICC payload
with open('color_profile.icc', 'rb') as icc:
image.profiles['ICC'] = icc.read()
# Remove XMP payload
del image.profiles['XMP']
Note
Each write operation on any profile type requires the raster image-data to be re-encoded. On lossy formats, such encoding operations can be considered a generation loss.