#16 2006-09-07 17:42:05

edfred
Membre
2005-11-18
35

Re: Présentation des infos EXIF

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

#17 2006-09-28 17:40:07

Joris
Invité

Re: Présentation des infos EXIF

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 ?

#18 2006-09-28 21:35:51

phgiraud
Membre
2006-08-23
37

Re: Présentation des infos EXIF

il doit manquer une accolade fermante, je n'ai pas vérifié exactement mais cela doit être ça

Hors ligne

#19 2006-09-28 23:27:49

Joris
Invité

Re: Présentation des infos EXIF

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 ... !

#20 2006-09-28 23:55:53

Joris
Invité

Re: Présentation des infos EXIF

j'ai trouvé ... merci !

#21 2006-11-22 18:10:22

dartagnan
Invité

Re: Présentation des infos EXIF

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
        )
      );
  }
}


?>

#22 2006-11-22 18:15:04

phgiraud
Membre
2006-08-23
37

Re: Présentation des infos EXIF

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

#23 2008-02-11 03:49:13

tieum
Membre
2007-09-15
49

Re: Présentation des infos EXIF

Bonjour,

Comment mettre cela en plugin? Peut-on se faire appeller pour surcharger l'affichage des EXIFs?

Merci,

Tieum

Hors ligne

#24 2008-02-11 07:05:30

rub
Former Piwigo Team
Lille
2005-08-26
5239

Re: Présentation des infos EXIF

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

#25 2008-02-11 09:17:22

Nicco
Membre
Paris - Val de Marne
2006-05-12
1794

Re: Présentation des infos EXIF

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


Nicco Starrrr ..... voici ma galerie http://gallery-nicco.no-ip.org & ma passion http://bd-nicco.no-ip.org
version PWG 1.7.1 + de nombreux plugins actifs (trop pour les énumérer)

Hors ligne

#26 2008-02-11 14:51:39

tieum
Membre
2007-09-15
49

Re: Présentation des infos EXIF

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.

Code:

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

#27 2008-02-11 15:40:27

Nicco
Membre
Paris - Val de Marne
2006-05-12
1794

Re: Présentation des infos EXIF

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


Nicco Starrrr ..... voici ma galerie http://gallery-nicco.no-ip.org & ma passion http://bd-nicco.no-ip.org
version PWG 1.7.1 + de nombreux plugins actifs (trop pour les énumérer)

Hors ligne

#28 2008-02-11 20:25:23

Nicco
Membre
Paris - Val de Marne
2006-05-12
1794

Re: Présentation des infos EXIF

bon alors ton plugin tieum !!!

on l attend avec impatience ;-]


Nicco Starrrr ..... voici ma galerie http://gallery-nicco.no-ip.org & ma passion http://bd-nicco.no-ip.org
version PWG 1.7.1 + de nombreux plugins actifs (trop pour les énumérer)

Hors ligne

#29 2008-02-11 23:32:01

tieum
Membre
2007-09-15
49

Re: Présentation des infos EXIF

J'ai comme qui dirait un boulot ;-)

QU'est-ce qui ne va pas dans exif_view? Je le trouve plutot pas mal.

Hors ligne

#30 2008-02-11 23:48:04

Nicco
Membre
Paris - Val de Marne
2006-05-12
1794

Re: Présentation des infos EXIF

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


Nicco Starrrr ..... voici ma galerie http://gallery-nicco.no-ip.org & ma passion http://bd-nicco.no-ip.org
version PWG 1.7.1 + de nombreux plugins actifs (trop pour les énumérer)

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact