YES, ça roule, je te remercie infiniment, j'ai bien cherché si tout était là mais j'ai pas vu ça, je dois dire que c'est à force de lire ces code que je commence à les comprendre.
Petit à petit j'arriverai à voir mes erreurs, j'espère.
@+
Hors ligne
bonjour !
Admiratif de votre travail, j'ai tenté le coup et j'obtient :
Parse error: syntax error, unexpected $end in /mnt/113/sdc/a/3/ftpktf/phpwebgallery/include/picture_metadata.inc.php on line 164
include_once(PHPWG_ROOT_PATH.'/include/functions_metadata.inc.php');
$template->assign_block_vars('metadata', array());
if ($conf['show_exif'])
{
if (!function_exists('read_exif_data'))
{
die('Exif extension not available, admin should disable exif display');
}
if ($exif = @read_exif_data($picture['current']['src_file_system']))
{
$template->assign_block_vars(
'metadata.headline',
array('TITLE' => 'EXIF Metadata')
);
foreach ($conf['show_exif_fields'] as $field)
{
if (strpos($field, ';') === false)
{
if (isset($exif[$field]))
{
// ************ PHG mouline data
$key = $field;
$champ = $field;
if (isset($lang['exif_field_'.$field])) $key = $lang['exif_field_'.$field];
$value = $exif[$field] ;
if ($champ==='Make') $value.=' '.$exif['Model'];
else if ($champ==='FocalLength') {
$value = compute_fraction($value) ;
$value.='mm';
} else if ($champ==="ExposureTime") {
$value = compute_fraction($value) ;
if ($value<1) {
$value=1/$value ;
$value="1/".$value ;
}
$value.="s";
} else if ($champ==='ExposureBiasValue') {
$value = compute_fraction($value) ;
if ($value>0) $value='+'.$value;
$value.=' EV';
} else if ($champ==='ExposureProgram') {
$sct = $exif['SceneCaptureType'];
$value='' ;
if ($sct>2) $value=$sct.' ';
$exp = $exif['ExposureProgram'];
switch($exp) {
case 0: if ($sct===0) $value='Bougie' ; else $value='?'; break;
case 1: $value.='M'; break;
case 2: $value.='P'; break;
case 3: $value.='A'; break;
case 4: $value.='S'; break;
case 5: $value.='Plage'; break;
case 6: $value.='Sport'; break;
case 7: $value.='Portrait'; break;
case 8: $value.='Paysage'; break;
default: $value.='Autre ('.$exp.')' ; break;
}
} else if ($champ==='LightSource') {
switch($value) {
case 0: $value="Auto"; break;
case 1: $value="Jour"; break;
case 2: $value="Fluorescent"; break;
case 3: $value="Incandescent"; break;
case 4: $value="Flash"; break;
case 9: $value="Beau temps"; break;
case 10: $value="Nuageux"; break;
case 11: $value="Ombragé"; break;
case 12: $value="Daylight fluorescent (D 5700 – 7100K)"; break;
case 13: $value="Day white fluorescent (N 4600 – 5400K)"; break;
case 14: $value="Cool white fluorescent (W 3900 – 4500K)"; break;
case 15: $value="White fluorescent (WW 3200 – 3700K)"; break;
case 17: $value="Standard light A"; break;
case 18: $value="Standard light B"; break;
case 19: $value="Standard light C"; break;
case 20: $value="D55"; break;
case 21: $value="D65"; break;
case 22: $value="D75"; break;
case 23: $value="D50"; break;
case 24: $value="ISO studio tungsten"; break;
case 255: $value="Other light source"; break;
default: $value="Reserved (".$value.")"; break;
}
} else if ($champ==='Flash') {
switch($value) {
case 0x00: $flash='non'; break;
case 0x01: $flash='oui'; break;
case 0x05: $flash='retour ko'; break;
case 0x07: $flash='retour ok'; break;
case 0x09: $flash='oui, forcé'; break;
case 0x0D: $flash='oui, forcé, retour ko'; break;
case 0x0F: $flash='oui, forcé, retour ok'; break;
case 0x10: $flash='non, forcé'; break;
case 0x10: $flash='non, forcé'; break;
case 0x18: $flash='non, auto'; break;
case 0x19: $flash='oui, auto'; break;
case 0x1D: $flash='oui, auto, retour ko'; break;
case 0x1F: $flash='oui, auto, retour ok'; break;
case 0x20: $flash='pas de flash'; break;
case 0x41: $flash='oui, anti yeux rouges'; break;
case 0x45: $flash='oui, anti yeux rouges, retour ko'; break;
case 0x47: $flash='oui, anti yeux rouges, retour ok'; break;
case 0x49: $flash='oui, forcé, anti yeux rouges'; break;
case 0x4D: $flash='oui, forcé, anti yeux rouges, retour ko'; break;
case 0x4F: $flash='oui, forcé, anti yeux rouges, retour ok'; break;
case 0x59: $flash='oui, auto, anti yeux rouges'; break;
case 0x5D: $flash='oui, auto, anti yeux rouges, retour ko'; break;
case 0x5F: $flash='oui, auto, anti yeux rouges, retour ok'; break;
default: $flash='Reserved'; break;
}
$value=$flash.' ('.dechex($value).')';
}
$template->assign_block_vars(
'metadata.line',
array(
'KEY' => $key,
'VALUE' => $value
)
);
}
}
}
}
{
$tokens = explode('/', $value);
if (count($tokens)!=2) return $value ;
return floatval($tokens[0]) / floatval($tokens[1]) ;
}
?> ligne 164
Une petite aide aussi ?
Bonne nouvelle, j'ai rajouté l'accolade,
maintenant j'ai une erreure ligne 65 !
Fatal error: Call to undefined function: compute_fraction() in /mnt/113/sdc/a/3/ftpktf/phpwebgallery/include/picture_metadata.inc.php on line 65
$value = compute_fraction($value);
?? je comprends pas , j'ai juste copié collé ton code ... !
bonjour,
super cette idée d'ajouter les exifs........Des renseignements très pratique pour tout photographe amateur.
Je me suis aventure dans la modification du php mais voilà, j'ai une erreur à la ligne 76.
je vous mets le code complet. Pour info, je ne connais rien à la programmation !
Merci pour votre aide.
le code:
<?php
// +-----------------------------------------------------------------------+
// | PhpWebGallery - a PHP based picture gallery |
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
// | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net |
// +-----------------------------------------------------------------------+
// | branch : BSF (Best So Far)
// | file : $RCSfile$
// | last update : $Date: 2006-04-05 04:18:27 +0200 (mer, 05 avr 2006) $
// | last modifier : $Author: rvelices $
// | revision : $Revision: 1126 $
// +-----------------------------------------------------------------------+
// | 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. |
// +-----------------------------------------------------------------------+
/**
* This file is included by the picture page to manage picture metadata
*
*/
include_once(PHPWG_ROOT_PATH.'/include/functions_metadata.inc.php');
$template->assign_block_vars('metadata', array());
if ($conf['show_exif'])
{
if (!function_exists('read_exif_data'))
{
die('Exif extension not available, admin should disable exif display');
}
if ($exif = @read_exif_data($picture['current']['src_file_system']))
{
$template->assign_block_vars(
'metadata.headline',
array('TITLE' => 'EXIF Metadata')
);
foreach ($conf['show_exif_fields'] as $field)
{
if (strpos($field, ';') === false)
{
if (isset($exif[$field]))
{
// ************ PHG mouline data
$key = $field;
$champ = $field;
if (isset($lang['exif_field_'.$field])) $key = $lang['exif_field_'.$field];
$value = $exif[$field] ;
if ($champ==='Make') $value.=' '.$exif['Model'];
else if ($champ==='FocalLength') {
$value = compute_fraction($value) ;
$value.='mm';
if (isset($exif['FocalLengthIn35mmFilm'])) {
$f35 = compute_fraction($exif['FocalLengthIn35mmFilm']) ;
} else {
if ($exif['Model']==='DSC-H1') $f35 = $value*6.0 ;
else if ($exif['Model']==='E885') $f35 = $value*4.75 ;
else if ($exif['Model']==='Canon EOS 350D DIGITAL') $f35 = $value*1.6 ;
else if ($exif['Model']==='Nikon D70') $f35 = $value*1.5 ;
}
if (isset($f35)) $value.=' (equ. '.$f35.'mm)';
{
$value = compute_fraction($value) ;
$value.='mm';
} else if ($champ==="ExposureTime") {
$value = compute_fraction($value) ;
if ($value<1) {
$value=1/$value ;
$value="1/".$value ;
}
$value.="s";
} else if ($champ==='ExposureBiasValue') {
$value = compute_fraction($value) ;
if ($value>0) $value='+'.$value;
$value.=' EV';
} else if ($champ==='ExposureProgram') {
$sct = $exif['SceneCaptureType'];
$value='' ;
if ($sct>2) $value=$sct.' ';
$exp = $exif['ExposureProgram'];
switch($exp) {
case 0: if ($sct===0) $value='Bougie' ; else $value='?'; break;
case 1: $value.='M'; break;
case 2: $value.='P'; break;
case 3: $value.='A'; break;
case 4: $value.='S'; break;
case 5: $value.='Plage'; break;
case 6: $value.='Sport'; break;
case 7: $value.='Portrait'; break;
case 8: $value.='Paysage'; break;
default: $value.='Autre ('.$exp.')' ; break;
}
} else if ($champ==='LightSource') {
switch($value) {
case 0: $value="Auto"; break;
case 1: $value="Jour"; break;
case 2: $value="Fluorescent"; break;
case 3: $value="Incandescent"; break;
case 4: $value="Flash"; break;
case 9: $value="Beau temps"; break;
case 10: $value="Nuageux"; break;
case 11: $value="Ombragé"; break;
case 12: $value="Daylight fluorescent (D 5700 – 7100K)"; break;
case 13: $value="Day white fluorescent (N 4600 – 5400K)"; break;
case 14: $value="Cool white fluorescent (W 3900 – 4500K)"; break;
case 15: $value="White fluorescent (WW 3200 – 3700K)"; break;
case 17: $value="Standard light A"; break;
case 18: $value="Standard light B"; break;
case 19: $value="Standard light C"; break;
case 20: $value="D55"; break;
case 21: $value="D65"; break;
case 22: $value="D75"; break;
case 23: $value="D50"; break;
case 24: $value="ISO studio tungsten"; break;
case 255: $value="Other light source"; break;
default: $value="Reserved (".$value.")"; break;
}
} else if ($champ==='Flash') {
switch($value) {
case 0x00: $flash='non'; break;
case 0x01: $flash='oui'; break;
case 0x05: $flash='retour ko'; break;
case 0x07: $flash='retour ok'; break;
case 0x09: $flash='oui, forcé'; break;
case 0x0D: $flash='oui, forcé, retour ko'; break;
case 0x0F: $flash='oui, forcé, retour ok'; break;
case 0x10: $flash='non, forcé'; break;
case 0x10: $flash='non, forcé'; break;
case 0x18: $flash='non, auto'; break;
case 0x19: $flash='oui, auto'; break;
case 0x1D: $flash='oui, auto, retour ko'; break;
case 0x1F: $flash='oui, auto, retour ok'; break;
case 0x20: $flash='pas de flash'; break;
case 0x41: $flash='oui, anti yeux rouges'; break;
case 0x45: $flash='oui, anti yeux rouges, retour ko'; break;
case 0x47: $flash='oui, anti yeux rouges, retour ok'; break;
case 0x49: $flash='oui, forcé, anti yeux rouges'; break;
case 0x4D: $flash='oui, forcé, anti yeux rouges, retour ko'; break;
case 0x4F: $flash='oui, forcé, anti yeux rouges, retour ok'; break;
case 0x59: $flash='oui, auto, anti yeux rouges'; break;
case 0x5D: $flash='oui, auto, anti yeux rouges, retour ko'; break;
case 0x5F: $flash='oui, auto, anti yeux rouges, retour ok'; break;
default: $flash='Reserved'; break;
}
$value=$flash.' ('.dechex($value).')';
}
$template->assign_block_vars(
'metadata.line',
array(
'KEY' => $key,
'VALUE' => $value
)
);
Pour finir, quelques chaînes supplé
}
else
{
$tokens = explode(';', $field);
if (isset($exif[$tokens[0]][$tokens[1]]))
{
$key = $tokens[1];
if (isset($lang['exif_field_'.$tokens[1]]))
{
$key = $lang['exif_field_'.$tokens[1]];
}
$template->assign_block_vars(
'metadata.line',
array(
'KEY' => $key,
'VALUE' => $exif[$tokens[0]][$tokens[1]]
)
);
}
}
}
}
}
if ($conf['show_iptc'])
{
$iptc = get_iptc_data($picture['current']['src_file_system'],
$conf['show_iptc_mapping']);
if (count($iptc) > 0)
{
$template->assign_block_vars(
'metadata.headline',
array('TITLE' => 'IPTC Metadata')
);
}
foreach ($iptc as $field => $value)
{
$key = $field;
if (isset($lang[$field]))
{
$key = $lang[$field];
}
$template->assign_block_vars(
'metadata.line',
array(
'KEY' => $key,
'VALUE' => $value
)
);
}
}
?>
apparemment, il faut enlever l'accolade en ligne 73
(par contre, je ne suis pas à l'origine de l'idée de présenter les EXIF, c'est une fonctionnalité déjà présente dans PWG ; j'ai seulement proposé une nouvelle manière de les afficher)
Hors ligne
tieum a écrit:
Bonjour,
Comment mettre cela en plugin? Peut-on se faire appeller pour surcharger l'affichage des EXIFs?
Merci,
Tieum
Tu as le trigger format_exif_data.
Tu peux aller voir le plugin EXIF View pour avoir un exemple.
Hors ligne
effectivement si tu arrives a mettre ce MOD en plugin je pense que tu auras du succes !!!
j avais completement oublié cette presentation ... ca serai bien de la retrouver
Hors ligne
Euh, je l'ai installe comme un plugin et ca marche du tonnerre.
Je suis en train de faire la trad en francais.
J;ai aussi ajouter du code comme indique ci-dessus pour calculer l'equivalent 35mm. Voici la nouvelle fonction function exif_translation pour arriver a cela.
function exif_translation($exif) { // translate all exif fields if (is_array($exif)) { loadLang(); foreach ($exif as $key => $value) { $exif[$key] = exif_key_translation($key, $value); } if ( !isset($exif['FocalLengthIn35mmFilm']) and isset($exif['FocalLength']) and isset($exif['Model']) ) { $Focal= explode('m', $exif['FocalLength']); if ($exif['Model']==='DSC-H1') $f35 = $Focal[0]*6.0 ; else if ($exif['Model']==='E885') $f35 = $Focal[0]*4.75 ; else if ($exif['Model']==='Canon EOS 350D DIGITAL') $f35 = $Focal[0]*1.6 ; else if ($exif['Model']==='Canon DIGITAL IXUS 750') $f35 = $Focal[0]*4.8 ; if (isset($f35)) $exif['FocalLengthIn35mmFilm'] = $f35." mm"; } } return $exif; }
Dernière modification par tieum (2008-02-11 14:57:53)
Hors ligne
aaahh oui desole mais je ne parlais pas de la bonne chose ... moi c est toute ca mise en page que je voulais et que je trouvais genial !!!
donc avis a la population ... un plugin qui reprend la presentation de phgiraud please
Hors ligne
bon alors ton plugin tieum !!!
on l attend avec impatience ;-]
Hors ligne
bon faut que je regarde car la j ai encore du loupé un plugin je me souviens plus de ce qu il fait et si je l ai testé
bon on verra demain
Hors ligne