Bug#4724; fixed problems with IptcTag and Latitude/ Longitude handling.
svn: r16780
This commit is contained in:
parent
91ca1981ac
commit
f6947c08c6
@ -32,6 +32,7 @@ import time
|
|||||||
# abilty to escape certain characters from html output...
|
# abilty to escape certain characters from html output...
|
||||||
from xml.sax.saxutils import escape as _html_escape
|
from xml.sax.saxutils import escape as _html_escape
|
||||||
|
|
||||||
|
from fractions import Fraction
|
||||||
#------------------------------------------------
|
#------------------------------------------------
|
||||||
# Gtk/ Gramps modules
|
# Gtk/ Gramps modules
|
||||||
#------------------------------------------------
|
#------------------------------------------------
|
||||||
@ -62,7 +63,7 @@ if not pyexiv2_required:
|
|||||||
REQ_pyexiv2_VERSION, _DOWNLOAD_LINK))
|
REQ_pyexiv2_VERSION, _DOWNLOAD_LINK))
|
||||||
|
|
||||||
# import the required classes for use in this gramplet
|
# import the required classes for use in this gramplet
|
||||||
from pyexiv2 import ImageMetadata
|
from pyexiv2 import ImageMetadata, Rational
|
||||||
|
|
||||||
from gen.plug import Gramplet
|
from gen.plug import Gramplet
|
||||||
from DateHandler import displayer as _dd
|
from DateHandler import displayer as _dd
|
||||||
@ -435,7 +436,6 @@ class MediaMetadata(Gramplet):
|
|||||||
#------------------------------------------------
|
#------------------------------------------------
|
||||||
# Retrieve metadata from image
|
# Retrieve metadata from image
|
||||||
#------------------------------------------------
|
#------------------------------------------------
|
||||||
|
|
||||||
def _get_value(KeyTag, image):
|
def _get_value(KeyTag, image):
|
||||||
"""
|
"""
|
||||||
gets the value from the Exif Key, and returns it...
|
gets the value from the Exif Key, and returns it...
|
||||||
@ -444,28 +444,44 @@ def _get_value(KeyTag, image):
|
|||||||
@param: image -- pyexiv2 ImageMetadata instance
|
@param: image -- pyexiv2 ImageMetadata instance
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
if "Exif" in KeyTag:
|
||||||
try:
|
try:
|
||||||
KeyValue = image[KeyTag].raw_value
|
KeyValue = image[KeyTag].value
|
||||||
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
KeyValue = image[KeyTag].raw_value
|
||||||
|
|
||||||
|
except ValueError:
|
||||||
KeyValue = ""
|
KeyValue = ""
|
||||||
|
|
||||||
|
# Iptc KeyTag
|
||||||
|
elif "Iptc" in KeyTag:
|
||||||
|
try:
|
||||||
|
KeyValue = image[KeyTag].value
|
||||||
|
|
||||||
|
except KeyError:
|
||||||
|
KeyValye = "[tag not set]"
|
||||||
|
|
||||||
|
except ValueError:
|
||||||
|
KeyValue = ""
|
||||||
return KeyValue
|
return KeyValue
|
||||||
|
|
||||||
def rational_to_dms(rational_coords):
|
def convert_value(value):
|
||||||
|
"""
|
||||||
|
will take a value from the coordinates and return its value
|
||||||
|
"""
|
||||||
|
|
||||||
|
if isinstance(value, Rational):
|
||||||
|
value = value.numerator
|
||||||
|
else:
|
||||||
|
value = (value.numerator / value.denominator)
|
||||||
|
return value
|
||||||
|
|
||||||
|
def rational_to_dms(coords):
|
||||||
"""
|
"""
|
||||||
will return a rational set of coordinates to degrees, minutes, seconds
|
will return a rational set of coordinates to degrees, minutes, seconds
|
||||||
"""
|
"""
|
||||||
|
return convert_value(coords[0]), convert_value(coords[1]), convert_value(coords[2])
|
||||||
rd, rm, rs = rational_coords.split(" ")
|
|
||||||
rd, rest = rd.split("/")
|
|
||||||
rm, rest = rm.split("/")
|
|
||||||
rs, rest = rs.split("/")
|
|
||||||
|
|
||||||
if len(rest) > 1:
|
|
||||||
rs = str( float( int(rs) / int(rest) ) )
|
|
||||||
|
|
||||||
return rd, rm, rs
|
|
||||||
|
|
||||||
#------------------------------------------------
|
#------------------------------------------------
|
||||||
# Support functions
|
# Support functions
|
||||||
|
Loading…
x
Reference in New Issue
Block a user