aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorz0rglub <z0rglub@piwigo.org>2004-08-25 21:09:09 +0000
committerz0rglub <z0rglub@piwigo.org>2004-08-25 21:09:09 +0000
commitd8494248fc3df1ac9b688fd5b250de60a50361b2 (patch)
tree209664043b3f2014be7acd492ba5a3b690c11883 /include
parent593574214c8dcbd9fa5bb79060d9bbbc81ffd1fc (diff)
"show metadata" feature added : you can ask to show metadata (EXIF and IPTC)
on picture.php page. Metadata read functions were moved from admin/include/functions_metadata.php to include/functions_metadata.inc.php git-svn-id: http://piwigo.org/svn/trunk@493 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include')
-rw-r--r--include/config.inc.php30
-rw-r--r--include/functions_metadata.inc.php73
2 files changed, 103 insertions, 0 deletions
diff --git a/include/config.inc.php b/include/config.inc.php
index 12e33c573..2c3fdae81 100644
--- a/include/config.inc.php
+++ b/include/config.inc.php
@@ -58,4 +58,34 @@ $conf['top_number'] = 10;
$conf['anti-flood_time'] = 60; // seconds between 2 comments : 0 to disable
$conf['max_LOV_categories'] = 50;
+// $conf['show_iptc_mapping'] is used for showing IPTC metadata on
+// picture.php page. For each key of the array, you need to have the same
+// key in the $lang array. For example, if my first key is 'iptc_keywords'
+// (associated to '2#025') then you need to have $lang['iptc_keywords'] set
+// in language/$user['language']/common.lang.php. If you don't have the lang
+// var set, the key will be simply displayed
+//
+// To know how to associated iptc_field with their meaning, use
+// tools/metadata.php
+$conf['show_iptc_mapping'] = array(
+ 'iptc_keywords' => '2#025',
+ 'iptc_caption_writer' => '2#122',
+ 'iptc_byline_title' => '2#085',
+ 'iptc_caption' => '2#120'
+ );
+
+// in EXIF fields, you can choose to display fields in sub-arrays, for
+// example ['COMPUTED']['ApertureFNumber']. for this, add
+// 'COMPUTED;ApertureFNumber' in $conf['show_exif_fields']
+//
+// The key displayed in picture.php will be $lang['exif_field_Make'] for
+// example and if it exists. For compound fields, only take into account the
+// last part : for key 'COMPUTED;ApertureFNumber', you need
+// $lang['exif_field_ApertureFNumber']
+$conf['show_exif_fields'] = array('Make',
+ 'Model',
+ 'DateTime',
+ 'COMPUTED;ApertureFNumber');
+// for PHP version newer than 4.1.2 :
+// $conf['show_exif_fields'] = array('CameraMake','CameraModel','DateTime');
?>
diff --git a/include/functions_metadata.inc.php b/include/functions_metadata.inc.php
new file mode 100644
index 000000000..e2b7333d5
--- /dev/null
+++ b/include/functions_metadata.inc.php
@@ -0,0 +1,73 @@
+<?php
+// +-----------------------------------------------------------------------+
+// | functions_metadata.inc.php |
+// +-----------------------------------------------------------------------+
+// | application : PhpWebGallery <http://phpwebgallery.net> |
+// | branch : BSF (Best So Far) |
+// +-----------------------------------------------------------------------+
+// | file : $RCSfile$
+// | last update : $Date$
+// | last modifier : $Author$
+// | revision : $Revision$
+// +-----------------------------------------------------------------------+
+// | This program is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation |
+// | |
+// | This program is distributed in the hope that it will be useful, but |
+// | WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU General Public License |
+// | along with this program; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
+// | USA. |
+// +-----------------------------------------------------------------------+
+
+/**
+ * returns informations from IPTC metadata, mapping is done at the beginning
+ * of the function
+ *
+ * @param string $filename
+ * @return array
+ */
+function get_iptc_data($filename, $map)
+{
+ $result = array();
+
+ // Read IPTC data
+ $iptc = array();
+
+ $imginfo = array();
+ getimagesize($filename, $imginfo);
+
+ if (isset($imginfo['APP13']))
+ {
+ $iptc = iptcparse($imginfo['APP13']);
+ if (is_array($iptc))
+ {
+ $rmap = array_flip($map);
+ foreach (array_keys($rmap) as $iptc_key)
+ {
+ if (isset($iptc[$iptc_key][0]) and $value = $iptc[$iptc_key][0])
+ {
+ // strip leading zeros (weird Kodak Scanner software)
+ while ($value[0] == chr(0))
+ {
+ $value = substr($value, 1);
+ }
+ // remove binary nulls
+ $value = str_replace(chr(0x00), ' ', $value);
+
+ foreach (array_keys($map, $iptc_key) as $pwg_key)
+ {
+ $result[$pwg_key] = $value;
+ }
+ }
+ }
+ }
+ }
+ return $result;
+}
+?> \ No newline at end of file