diff options
Diffstat (limited to 'exif.class.php')
-rw-r--r-- | exif.class.php | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/exif.class.php b/exif.class.php index 045f28a..b5ad35b 100644 --- a/exif.class.php +++ b/exif.class.php @@ -67,14 +67,20 @@ Class Exif { } $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; @@ -86,17 +92,31 @@ Class Exif { return $ending; } - public function readIPTCTags($file, $arTagNames=array()) { + /** + * Read IPTC tags. + * + * @param String $file + * Path to image to read IPTC from + * + * @param array $arTagNames + * An array of Strings that contain the IPTC to read + * If you leave this empty nothing will be returned, unless you select a special + * return style in the $arOptions + * + * @param array $arOptions + * The following options are possible: + * style: fullSmall + * + */ + public function readIPTCTags($file, $arTagNames=array(), $arOptions=array()) { $humanReadableKey = $this->getHumanReadableIPTCkey(); $size = GetImageSize ($file, $infoImage); $iptc = empty($infoImage["APP13"]) ? array() : iptcparse($infoImage["APP13"]); $arSmallIPTC = array(); if (is_array($iptc)) { - foreach($iptc as $key => $value) - { + foreach ($iptc as $key => $value) { $resultTag = ""; - foreach($value as $innerkey => $innervalue) - { + foreach ($value as $innerkey => $innervalue) { if( ($innerkey+1) != count($value) ) { $resultTag .= $innervalue . ", "; } @@ -107,6 +127,11 @@ Class Exif { $arSmallIPTC[$humanReadableKey[$key]] = $resultTag; } } + + if ($arOptions['style'] == 'fullSmall') { + return $arSmallIPTC; + } + $info = array(); foreach ($arTagNames as $tagName) { if ($tagName['section'] == "iptc") { |