Author: post
Date: 2011-02-26 18:34:13 +0100 (Sat, 26 Feb 2011)
New Revision: 3833
Modified:
trunk/plugins/meta-exiv2/exiv2-metadata.cpp
Log:
Load more lens information from 8 bit images.
Modified: trunk/plugins/meta-exiv2/exiv2-metadata.cpp
===================================================================
--- trunk/plugins/meta-exiv2/exiv2-metadata.cpp 2011-02-26 16:04:18 UTC (rev
3832)
+++ trunk/plugins/meta-exiv2/exiv2-metadata.cpp 2011-02-26 17:34:13 UTC (rev
3833)
@@ -187,7 +187,76 @@
}
#endif
- /* TODO: Add min/max focal on supported cameras */
+ /* Canon*/
+ i = exifData.findKey(ExifKey("Exif.CanonCs.Lens"));
+ if (i != exifData.end()
+ && i->value().count() >= 3
+ && i->value().typeId() ==
unsignedShort)
+ {
+ float fu = i->value().toFloat(2);
+ if (fu != 0.0)
+ {
+ meta->lens_min_focal = i->toFloat(0) /
fu;
+ meta->lens_max_focal = i->toFloat(1)
/fu;
+ }
+ }
+ i =
exifData.findKey(ExifKey("Exif.CanonCs.MinAperture"));
+ if (i != exifData.end())
+ meta->lens_min_aperture = (gfloat)
exp(CanonEv(i->toFloat())*log(2)/2);
+ i =
exifData.findKey(ExifKey("Exif.CanonCs.MaxAperture"));
+ if (i != exifData.end())
+ meta->lens_max_aperture = (gfloat)
exp(CanonEv(i->toFloat())*log(2)/2);
+
+ /* Olympus */
+ i =
exifData.findKey(ExifKey("Exif.OlympusEq.MinFocalLength"));
+ if (i != exifData.end())
+ meta->lens_min_focal = i->toFloat();
+ i =
exifData.findKey(ExifKey("Exif.OlympusEq.MaxFocalLength"));
+ if (i != exifData.end())
+ meta->lens_max_focal = i->toFloat();
+
+
+ /* Nikon */
+ i =
exifData.findKey(ExifKey("Exif.NikonLd1.MinFocalLength"));
+ if (i == exifData.end())
+ i =
exifData.findKey(ExifKey("Exif.NikonLd2.MinFocalLength"));
+ if (i == exifData.end())
+ i =
exifData.findKey(ExifKey("Exif.NikonLd3.MinFocalLength"));
+ if (i != exifData.end())
+ meta->lens_min_focal = 5.0 * pow(2.0,
i->toLong()/24.0);
+
+ i =
exifData.findKey(ExifKey("Exif.NikonLd1.MaxFocalLength"));
+ if (i == exifData.end())
+ i =
exifData.findKey(ExifKey("Exif.NikonLd2.MaxFocalLength"));
+ if (i == exifData.end())
+ i =
exifData.findKey(ExifKey("Exif.NikonLd3.MaxFocalLength"));
+ if (i != exifData.end())
+ meta->lens_max_focal = 5.0 * pow(2.0,
i->toLong()/24.0);
+
+ i =
exifData.findKey(ExifKey("Exif.NikonLd1.MaxApertureAtMinFocal"));
+ if (i == exifData.end())
+ i =
exifData.findKey(ExifKey("Exif.NikonLd2.MaxApertureAtMinFocal"));
+ if (i == exifData.end())
+ i =
exifData.findKey(ExifKey("Exif.NikonLd3.MaxApertureAtMinFocal"));
+ if (i != exifData.end())
+ meta->lens_min_aperture = i->toLong()/12.0;
+
+ i =
exifData.findKey(ExifKey("Exif.NikonLd1.MaxApertureAtMaxFocal"));
+ if (i == exifData.end())
+ i =
exifData.findKey(ExifKey("Exif.NikonLd2.MaxApertureAtMaxFocal"));
+ if (i == exifData.end())
+ i =
exifData.findKey(ExifKey("Exif.NikonLd3.MaxApertureAtMaxFocal"));
+ if (i != exifData.end())
+ meta->lens_max_aperture = i->toLong()/12.0;
+
+ /* Fuji */
+ i =
exifData.findKey(ExifKey("Exif.Fujifilm.MinFocalLength"));
+ if (i != exifData.end())
+ meta->lens_min_focal = i->toFloat();
+ i =
exifData.findKey(ExifKey("Exif.Fujifilm.MaxFocalLength"));
+ if (i != exifData.end())
+ meta->lens_max_focal = i->toFloat();
+
return TRUE;
}
} catch (Exiv2::Error& e) {
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit