diff --git a/exifread/classes.py b/exifread/classes.py index 7b0eb97..a5818cd 100644 --- a/exifread/classes.py +++ b/exifread/classes.py @@ -542,7 +542,10 @@ def _canon_decode_tag(self, value, mn_tags): tag = mn_tags.get(i, ('Unknown', )) name = tag[0] if len(tag) > 1: - val = tag[1].get(value[i], 'Unknown') + if callable(tag[1]): + val = tag[1](value[i]) + else: + val = tag[1].get(value[i], 'Unknown') else: val = value[i] try: diff --git a/exifread/tags/makernote/canon.py b/exifread/tags/makernote/canon.py index f41c84c..a84d168 100644 --- a/exifread/tags/makernote/canon.py +++ b/exifread/tags/makernote/canon.py @@ -4,6 +4,17 @@ http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html """ +def add_one(value): + return value + 1 + + +def subtract_one(value): + return value - 1 + + +def convert_temp(value): + return '%d C' % (value - 128) + TAGS = { 0x0003: ('FlashInfo',), 0x0006: ('ImageType', ), @@ -538,6 +549,7 @@ 3: 'None' }), 9: ('SequenceNumber', ), + 12: ('CameraTemperature', convert_temp), 14: ('AFPointUsed', ), 15: ('FlashBias', { 0xFFC0: '-2 EV', @@ -659,17 +671,6 @@ } -def add_one(value): - return value + 1 - - -def subtract_one(value): - return value - 1 - - -def convert_temp(value): - return '%d C' % (value - 128) - # CameraInfo data structures have variable sized members. Each entry here is: # byte offset: (item name, data item type, decoding map). # Note that the data item type is fed directly to struct.unpack at the