diff options
Diffstat (limited to 'tools/metadata.php')
-rw-r--r-- | tools/metadata.php | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/tools/metadata.php b/tools/metadata.php index 011240135..1ef307f3f 100644 --- a/tools/metadata.php +++ b/tools/metadata.php @@ -28,6 +28,25 @@ $filename = 'sample.jpg'; echo 'Informations are read from '.$filename.'<br /><br /><br />'; +/** + * return a cleaned IPTC value + * + * @param string value + * @return string + */ +function clean_iptc_value($value) +{ + // strip leading zeros (weird Kodak Scanner software) + while ( isset($value[0]) and $value[0] == chr(0)) + { + $value = substr($value, 1); + } + // remove binary nulls + $value = str_replace(chr(0x00), ' ', $value); + + return $value; +} + $iptc_result = array(); $imginfo = array(); getimagesize($filename, $imginfo); @@ -38,17 +57,25 @@ if (isset($imginfo['APP13'])) { foreach (array_keys($iptc) as $iptc_key) { - if (isset($iptc[$iptc_key][0]) and $value = $iptc[$iptc_key][0]) + if (isset($iptc[$iptc_key][0])) { - // strip leading zeros (weird Kodak Scanner software) - while ($value[0] == chr(0)) + if ($iptc_key == '2#025') + { + $value = implode( + ',', + array_map( + 'clean_iptc_value', + $iptc[$iptc_key] + ) + ); + } + else { - $value = substr($value, 1); + $value = clean_iptc_value($iptc[$iptc_key][0]); } - // remove binary nulls - $value = str_replace(chr(0x00), ' ', $value); + + $iptc_result[$iptc_key] = $value; } - $iptc_result[$iptc_key] = $value; } } |