--- exif.class.old	2009-11-25 01:04:40.000000000 -0600
+++ exif.class.php	2010-06-18 14:06:16.685058500 -0500
@@ -62,19 +62,24 @@ Class Exif {
     }
 
     $ar_supported_types = array('jpg', 'jpeg');
-    if (!in_array($this->getFileType($file), $ar_supported_types)) {
+    if (!in_array(strtolower($this->getFileType($file)), $ar_supported_types)) {
       return array();
     }
     $exif = exif_read_data($file, 0);
     $arSmallExif = array();
-    foreach ((array)$exif as $key => $value) {
-      $arSmallExif[strtolower($key)] = $value;
-    }
+    $arSmallExif = array_change_key_case((array)$exif, CASE_LOWER);
+    $arSmallExif['computed'] = array_change_key_case((array)$arSmallExif['computed'], CASE_LOWER); //why this function isn't recursive is beyond me
+    $arSmallExif['thumbnail'] = array_change_key_case((array)$arSmallExif['thumbnail'], CASE_LOWER);
+    $arSmallExif['comment'] = array_change_key_case((array)$arSmallExif['comment'], CASE_LOWER);
     $info = array();
 
     foreach ($arTagNames as $tagName) {
-      if ($tagName['section'] != 'iptc' && !empty($arSmallExif[$tagName['tag']])) {
-        $info[$tagName['section'] .'_'. $tagName['tag']] = $arSmallExif[$tagName['tag']];
+      if ($tagName['section'] != 'iptc') {
+        if (!empty($arSmallExif[$tagName['tag']])) {
+          $info[$tagName['section'] .'_'. $tagName['tag']] = $arSmallExif[$tagName['tag']];
+        } elseif (!empty($arSmallExif[$tagName['section']][$tagName['tag']])) {
+          $info[$tagName['section'] .'_'. $tagName['tag']] = $arSmallExif[$tagName['section']][$tagName['tag']];
+        }
       }
     }
     return $info;
