aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/metadata.php41
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;
}
}