pyexiv2 0.1.3
pyexiv2.py

Manipulation of EXIF and IPTC metadata embedded in image files.
 
This module provides a single class, Image, and utility functions to manipulate
EXIF and IPTC metadata embedded in image files such as JPEG and TIFF files.
EXIF and IPTC metadata can be accessed in both read and write modes.
 
This module is a higher-level interface to the Python binding of the excellent
C++ library Exiv2, libpyexiv2.
Its only class, Image, inherits from libpyexiv2.Image and provides convenient
methods for the manipulation of EXIF and IPTC metadata using Python's built-in
types and modules such as datetime.
These methods should be preferred to the ones directly provided by
libpyexiv2.Image.
 
A typical use of this binding would be:
 
>>> import pyexiv2
>>> import datetime
>>> image = pyexiv2.Image('test/smiley.jpg')
>>> image.readMetadata()
>>> print image.exifKeys()
['Exif.Image.ImageDescription', 'Exif.Image.XResolution', 'Exif.Image.YResolution', 'Exif.Image.ResolutionUnit', 'Exif.Image.Software', 'Exif.Image.DateTime', 'Exif.Image.Artist', 'Exif.Image.Copyright', 'Exif.Image.ExifTag', 'Exif.Photo.Flash', 'Exif.Photo.PixelXDimension', 'Exif.Photo.PixelYDimension']
>>> print image['Exif.Image.DateTime']
2004-07-13 21:23:44
>>> image['Exif.Image.DateTime'] = datetime.datetime.today()
>>> image.writeMetadata()

 
Modules
       
datetime
libpyexiv2
re
time

 
Classes
       
datetime.tzinfo(__builtin__.object)
FixedOffset
libpyexiv2.Image(Boost.Python.instance)
Image
Rational

 
class FixedOffset(datetime.tzinfo)
    Fixed offset from a local time east from UTC.
 
Represent a fixed (positive or negative) offset from a local time in hours
and minutes.
 
Public methods:
utcoffset -- return offset of local time from UTC, in minutes east of UTC
dst -- return the daylight saving time (DST) adjustment, here always 0
tzname -- return a string representation of the offset with format '±%H%M'
 
 
Method resolution order:
FixedOffset
datetime.tzinfo
__builtin__.object

Methods defined here:
__init__(self, offsetSign='+', offsetHours=0, offsetMinutes=0)
Constructor.
 
Construct a FixedOffset object from an offset sign ('+' or '-') and an
offset absolute value expressed in hours and minutes.
No check on the validity of those values is performed, it is the
responsibility of the caller to pass correct values to the constructor.
 
Keyword arguments:
offsetSign -- the sign of the offset ('+' or '-')
offsetHours -- the absolute number of hours of the offset
offsetMinutes -- the absolute number of minutes of the offset
dst(self, dt)
Return the daylight saving time (DST) adjustment.
 
Return the daylight saving time (DST) adjustment.
In this implementation, it is always nil, and the method return
datetime.timedelta(0).
 
Keyword arguments:
dt -- the datetime.time object representing the local time
tzname(self, dt)
Return a string representation of the offset.
 
Return a string representation of the offset with format '±%H:%M'.
 
Keyword arguments:
dt -- the datetime.time object representing the local time
utcoffset(self, dt)
Return offset of local time from UTC, in minutes east of UTC.
 
Return offset of local time from UTC, in minutes east of UTC.
If local time is west of UTC, this should be negative.
The value returned is a datetime.timedelta object specifying a whole
number of minutes in the range -1439 to 1439 inclusive.
 
Keyword arguments:
dt -- the datetime.time object representing the local time

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

Methods inherited from datetime.tzinfo:
__getattribute__(...)
x.__getattribute__('name') <==> x.name
__reduce__(...)
-> (cls, state)
fromutc(...)
datetime in UTC -> datetime in local time.

Data and other attributes inherited from datetime.tzinfo:
__new__ = <built-in method __new__ of type object at 0xb7930740>
T.__new__(S, ...) -> a new object with type S, a subtype of T

 
class Image(libpyexiv2.Image)
    Provide convenient methods for the manipulation of EXIF and IPTC metadata.
 
Provide convenient methods for the manipulation of EXIF and IPTC metadata
embedded in image files such as JPEG and TIFF files, using Python's built-in
types and modules such as datetime.
 
 
Method resolution order:
Image
libpyexiv2.Image
Boost.Python.instance
__builtin__.object

Methods defined here:
__delitem__(self, key)
Implementation of the del operator for deletion on Image objects.
 
Delete the value associated to a key in EXIF/IPTC metadata.
 
If key references a repeatable tag (IPTC only), all the associated
values will be deleted.
 
Keyword arguments:
key -- the [EXIF|IPTC] key of the requested metadata tag
__getitem__(self, key)
Read access implementation of the [] operator on Image objects.
 
Get the value associated to a key in EXIF/IPTC metadata.
The value is cached in an internal dictionary for later accesses.
 
Whenever possible, the value is typed using Python's built-in types or
modules such as datetime when the value is composed of a date and a time
(e.g. the EXIF tag 'Exif.Photo.DateTimeOriginal') or date when the value
represents a date (e.g. the IPTC tag 'Iptc.Application2.DateCreated').
 
If key references a repeatable tag (IPTC only), a list of several values
is returned. If not, or if it has only one repetition, the list simply
has one element.
 
Keyword arguments:
key -- the [EXIF|IPTC] key of the requested metadata tag
__init__(self, filename)
__setitem__(self, key, value)
Write access implementation of the [] operator on Image objects.
 
Set the value associated to a key in EXIF/IPTC metadata.
The value is cached in an internal dictionary for later accesses.
 
The new value passed should be typed using Python's built-in types or
modules such as datetime when the value contains a date and a time
(e.g. the EXIF tag 'Exif.Photo.DateTimeOriginal' or the IPTC tags
'Iptc.Application2.DateCreated' and 'Iptc.Application2.TimeCreated'),
the method takes care of converting it before setting the internal tag
value.
 
If key references a repeatable tag (IPTC only), value can be a list of
values (the new values will overwrite the old ones, and an empty list of
values will unset the tag).
 
Keyword arguments:
key -- the [EXIF|IPTC] key of the requested metadata tag
value -- the new value for the requested metadata tag
cacheAllExifTags(self)
Cache the EXIF tag values for faster subsequent access.
 
Read the values of all the EXIF tags in the image and cache them in an
internal dictionary so as to speed up subsequent accesses.
cacheAllIptcTags(self)
Cache the IPTC tag values for faster subsequent access.
 
Read the values of all the IPTC tags in the image and cache them in an
internal dictionary so as to speed up subsequent accesses.
copyMetadataTo(self, destImage)
Duplicate all the tags and the comment from this image to another one.
 
Read all the values of the EXIF and IPTC tags and the comment and write
them back to the new image.
 
Keyword arguments:
destImage -- the destination image to write the copied metadata back to
interpretedExifValue(self, key)
Get the interpreted value of an EXIF tag as presented by the exiv2 tool.
 
For EXIF tags, the exiv2 command-line tool is capable of displaying
user-friendly interpreted values, such as 'top, left' for the
'Exif.Image.Orientation' tag when it has value '1'. This method always
returns a string containing this interpreted value for a given tag.
Warning: calling this method will not cache the value in the internal
dictionary.
 
Keyword arguments:
key -- the EXIF key of the requested metadata tag

Methods inherited from libpyexiv2.Image:
clearComment(...)
C++ signature:
clearComment(LibPyExiv2::Image {lvalue}) -> void*
deleteThumbnail(...)
C++ signature:
deleteThumbnail(LibPyExiv2::Image {lvalue}) -> void*
dumpThumbnailToFile(...)
C++ signature:
dumpThumbnailToFile(LibPyExiv2::Image {lvalue}, std::string) -> void*
exifKeys(...)
C++ signature:
exifKeys(LibPyExiv2::Image {lvalue}) -> boost::python::list
getComment(...)
C++ signature:
getComment(LibPyExiv2::Image {lvalue}) -> std::string
getThumbnailData(...)
C++ signature:
getThumbnailData(LibPyExiv2::Image {lvalue}) -> boost::python::tuple
iptcKeys(...)
C++ signature:
iptcKeys(LibPyExiv2::Image {lvalue}) -> boost::python::list
readMetadata(...)
C++ signature:
readMetadata(LibPyExiv2::Image {lvalue}) -> void*
setComment(...)
C++ signature:
setComment(LibPyExiv2::Image {lvalue}, std::string) -> void*
setThumbnailData(...)
C++ signature:
setThumbnailData(LibPyExiv2::Image {lvalue}, std::string) -> void*
setThumbnailFromJpegFile(...)
C++ signature:
setThumbnailFromJpegFile(LibPyExiv2::Image {lvalue}, std::string) -> void*
tagDetails(...)
C++ signature:
tagDetails(LibPyExiv2::Image {lvalue}, std::string) -> boost::python::tuple
writeMetadata(...)
C++ signature:
writeMetadata(LibPyExiv2::Image {lvalue}) -> void*

Data and other attributes inherited from libpyexiv2.Image:
__instance_size__ = 44

Data descriptors inherited from Boost.Python.instance:
__dict__
__weakref__

Data and other attributes inherited from Boost.Python.instance:
__new__ = <built-in method __new__ of Boost.Python.class object at 0xb7c304e0>
T.__new__(S, ...) -> a new object with type S, a subtype of T

 
class Rational
    A class representing a rational number.
 
  Methods defined here:
__eq__(self, other)
Compare two rational numbers for equality.
 
Two rational numbers are equal if and only if their numerators are equal
and their denominators are equal.
 
Keyword arguments:
other -- the rational number to compare to self for equality
__init__(self, numerator, denominator)
Constructor.
 
Construct a rational number from its numerator and its denominator.
 
Keyword arguments:
numerator -- the numerator
denominator -- the denominator (if zero, will raise a ZeroDivisionError)
__str__(self)
Return a string representation of the rational number.

 
Functions
       
ConvertToPythonType(tagFamily, tagType, tagValue)
Types a tag value using Python's built-in types or modules.
 
Whenever possible, the value is typed using Python's built-in types or
modules such as date when the value represents a date (e.g. the IPTC tag
'Iptc.Application2.DateCreated').
For EXIF rational number, custom type pyexiv2.Rational is used.
 
Keyword arguments:
tagFamily -- the family of the tag ('Exif' or 'Iptc')
tagType -- the type of the tag as defined in the EXIF and IPTC specifications
tagValue -- the value of the tag as a raw string
StringToDate(string)
Try to convert a string containing a date to a date object.
 
Try to convert a string containing a date to the corresponding date object.
The conversion is done by matching a regular expression.
If the pattern does not match, the string is returned unchanged.
 
Keyword arguments:
string -- the string potentially containing a date
StringToDateTime(string)
Try to convert a string containing a date and time to a datetime object.
 
Try to convert a string containing a date and time to the corresponding
datetime object. The conversion is done by trying several patterns for
regular expression matching.
If no pattern matches, the string is returned unchanged.
 
Keyword arguments:
string -- the string potentially containing a date and time
StringToRational(string)
Try to convert a string containing a rational number to a Rational object.
 
Try to convert a string containing a rational number to the corresponding
Rational object.
The conversion is done by matching a regular expression.
If the pattern does not match, the Rational object with numerator=0 and
denominator=1 is returned.
 
Keyword arguments:
string -- the string potentially containing a rational number
StringToTime(string)
Try to convert a string containing a time to a time object.
 
Try to convert a string containing a time to the corresponding time object.
The conversion is done by matching a regular expression.
If the pattern does not match, the string is returned unchanged.
 
Keyword arguments:
string -- the string potentially containing a time
StringToUndefined(sequence)
Convert a string containing a sequence of bytes into its undefined form.
 
Convert a string containing a sequence of bytes into the corresponding
sequence of ascii codes, each followed by a blank space (e.g. "0221" will
be converted into "48 50 50 49 ").
The Undefined type is defined in the EXIF specification.
 
Keyword arguments:
sequence -- the string containing the sequence of bytes
UndefinedToString(undefined)
Convert an undefined string into its corresponding sequence of bytes.
 
Convert a string containing the ascii codes of a sequence of bytes, each
followed by a blank space, into the corresponding string (e.g.
"48 50 50 49 " will be converted into "0221").
The Undefined type is defined in the EXIF specification.
 
Keyword arguments:
undefined -- the string containing the ascii codes of a sequence of bytes