mardi 15 décembre 2020 à 10:17
Merci Dave.
Je ne manquerais pas de revenir vers toi si nécessaire.
Réponse ci-dessus postée le vendredi 23 octobre 2020 : 22:19
Bonjour,
J'essaie depuis plusieurs jours d'afficher les exif lors de la visualisation des photos de la galerie mg3.
Pour cela j'ai incorporé après la ligne 261 du fichier "fonctions_affichage.php" ce code :
Code PHP :
Pour copier le contenu exact du code,
Veuillez citer le message
<?php
#####!!!#####
-
if(in_array(strtolower(end(explode("'.', $mg3_image"))), array('jpg', 'jpeg', 'tif', 'tiff'))) // Si fichier Jpeg ou Tiff
{
// Je lis les infos Exif
}
if($exif = exif_read_data( $mg3_image , 'EXIF', true )) // Si le fichier images contient des infos Exif
{
// Alors je lis ces informations
}
-
foreach ($exif as $key => $section) // On parcourt la première partie du tableau multidimensionnel
{
foreach ($section as $name => $value) // On parcourt la seconde partie
{
$exif_tab[$name] .= $value; // Récupération des valeurs dans le tableau $exif_tab
}
}
-
if($exif_tab['FocalLength']) // Si les données de la distance focale existent
{
$focale = round($exif_tab['FocalLength'], 0); // j'arrondis la valeur
$focale = $focale." mm"; // Je rajoute l'unité millimètre
}
if($exif_tab['Make']) // Marque de l'appareil
$marque = $exif_tab['Make'];
if($exif_tab['Model'])// Modèle de l'appareil
$modele = $exif_tab['Model'];
if($exif_tab['ExposureTime'])// Vitesse d'obturation
$vit_obt = $exif_tab['ExposureTime'];
if($exif_tab['ISOSpeedRatings']) // Valeur iso
$iso = $exif_tab['ISOSpeedRatings'];
if($exif_tab['ExposureBiasValue']) // Compensation d'exposition
$comp_expo = $exif_tab['ExposureBiasValue'];
if($exif_tab['DateTimeOriginal'])
$date = $exif_tab['DateTimeOriginal']; // Date de la prise de vue (heure de l'appareil)
// La date est d'un format spécial, on va donc la rendre lisible
$date2 = explode(":", current(explode(" ", $date)));
$heure = explode(":", end(explode(" ", $date))); // Utile dans le cas où vous souhaitez extraire l'heure
$annee = current($date2); // Je lis la valeur courante de date2
$mois = next($date2); // Puis la suivante (c'est un tableau)
$jour = next($date2); // Puis la suivante
-
if($exif_tab['Software']) // Si l'information sur le logiciel existe
$logiciel = $exif_tab['Software'];
-
if (($exif_tab['Width'] && $exif_tab['Height']))
$resolution = $exif_tab['Width'].'*'.$exif_tab['Height'];
$fn_proprietes.= '
<tr>
<td style="width:100%;">
<b>Appareil :</b>
Marque : $marque Modèle : $modele <b>Caractéristiques :</b> Focale : $focale Vitesse d'obturation : $vit_obt Iso : $iso Compensation d'exposition : $comp_expo<br />
Prise le : $jour/$mois/$annee A : $heure:$minute:$seconde<br /><br />
</td>
</tr>';
-
$fn_proprietes.= '
</table>
<table class="mg3_image_prop">';
-
#####!!!#####
?>
L'affichage est bien sous la photo visualisée mais pas les valeurs :
Citation :
IMG_0148.jpg
Appareil : Marque : $marque Modèle : $modele Caractéristiques : Focale : $focale Vitesse d'obturation : $vit_obt Iso : $iso Compensation d'exposition : $comp_expo
Prise le : $jour/$mois/$annee A : $heure:$minute:$seconde
Je suppose que le problème vient du chemin vers les photos renseignées dans :
Code PHP :
Pour copier le contenu exact du code,
Veuillez citer le message
<?php
#####!!!#####
-
if(in_array(strtolower(end(explode("'.', [surlign]$mg3_image[/surlign]"))), array('jpg', 'jpeg', 'tif', 'tiff')))
-
#####!!!#####
?>
et
Code PHP :
Pour copier le contenu exact du code,
Veuillez citer le message
<?php
#####!!!#####
-
if($exif = exif_read_data( [surlign]$mg3_image[/surlign] , 'EXIF', true ))
-
#####!!!#####
?>
Je n'arrive pas à trouver la bonne syntaxe vers les photos des albums.
Quelqu'un aurait-il une petite idée d'ou viendrait le problème ou ce qui manque dans mon code pour que cela fonctionne ?
Parce que là, je bloque. Je ne suis pas assez calé en php pour résoudre seul ce problème.
Je ne pense pas que l'ajout en BDD soit obligé. C'est juste une lecture et un affichage des exif de l'en-tête des photos. J'ai fait un essai en mettant un lien vers une photo et les exif s'affiche correctement.
Je ne sais pas si je me suis fait bien comprendre mais si on pouvait m'aider ou m'orienter ça serait très sympha.
Réponse ci-dessus postée le mardi 10 novembre 2020 : 21:59
Bon après plusieurs heures de recherche et d'essais, j'ai réussi à avoir les exifs sous mes photos.
Mais, bien sur il y a un mais, suivant la marque de l'appareil photo utilisé l'affichage n'est pas correcte pour certains paramètres.
J'insère dans le fichier fonctions_affichage.php le code ci-dessous.
Toutes les données exif ne s'affiche pas ou de façon erronées.
Par exemple :
focale : 2000 mm au lieu de 200 mm
vitesse d'obturation : 10/2500ème de secondes au lieu de 1/250ème.
Ces anomalies dépendent de l'appareil photo utilisé.
Pour les appareils Canon, Olympus ou Pentax les informations sont ok mais pas pour Nikon et Sony.
Code PHP :
Pour copier le contenu exact du code,
Veuillez citer le message
<?php
#####!!!#####
-
<!-- mg3 proprietes image -->
<table class="mg3_image_prop">';
/* debut du bloc des propriétés de l'image */
/* date, auteur et taille */
if ( $fn_infos->image->img_dt_creation != '0000-00-00' OR $fn_infos->image->img_auteur != '' ) {
$mg3_aaaa = substr( $fn_infos->image->img_dt_creation,0,4 );
$mg3_mm = substr( $fn_infos->image->img_dt_creation,5,2 );
$mg3_jj = substr( $fn_infos->image->img_dt_creation,8,2 );
$mg3_taille = $fn_infos->image->img_width.' x '.$fn_infos->image->img_height.' px - '.$fn_infos->image->img_size.' ko';
$mg3_auteur = str_replace( ' ','%20', trim( $fn_infos->image->img_auteur ));
}
-
if(in_array(strtolower(end(explode('.', ''.$fn_infos->image->img_chemin.''))), array('jpg', 'jpeg', 'tif', 'tiff'))) // Si fichier Jpeg ou Tiff
{
// Je lis les infos Exif
}
if($exif = exif_read_data( ''.$fn_infos->image->img_chemin.'' , '0', true )) // Si le fichier images contient des infos Exif
{
// Alors je lis ces informations
}
-
foreach ($exif as $key => $section) // On parcourt la première partie du tableau multidimensionnel
-
{
foreach ($section as $name => $value) // On parcourt la seconde partie
{
$exif_tab[$name] .= $value; // Récupération des valeurs dans le tableau $exif_tab
}
}
$marque = $exif_tab['Make']; // Marque de l'appareil
-
$modele = $exif_tab['Model']; // Modèle de l'appareil
$focale = $exif_tab['FocalLength']; // Données de la distance focale
{
$focale = round($exif_tab['FocalLength'], 0); // j'arrondis la valeur
$focale = $focale." mm"; // Je rajoute l'unité millimètre
}
-
$objectif = $exif_tab['LensModel']; // Description objectif
-
$vit_obt = $exif_tab['ExposureTime']; // Vitesse d\'obturation
$ouverture = $exif_tab['ApertureFNumber']; // Ouverture
$programme = $exif_tab['ExposureProgram']; // Données programme
$iso = $exif_tab['ISOSpeedRatings']; // Valeur iso
$cor_expo = (int)$exif_tab['ExposureBiasValue']; // Correction d'exposition
$mode = $exif_tab['MeteringMode']; // mode d'exposition (spot, matriciel, pondéré, ... )
$copyright = (string)$exif_tab['Artist']; // Copyright
$logiciel = $exif_tab['Software']; // Information sur le logiciel de posttraitement
-
$fn_proprietes.= '
<tr>
<td style="width:60%;vertical-align:top;padding-left:20px;margin: 10px;border: solid #dcdcdc;font-family:verdana;font-size:12px;">
<b>Appareil :</b><br />
- Marque :<span style="padding-left:4px;">'.$marque.'</span><br />
- Modèle :<span style="padding-left:6px;">'.$modele.'</span><br />
- Objectif :<span style="padding-left:6px;">'.$objectif.'</span><br /><br />
<b>Lumière :</b><br />
- Mode de mesure: <span style="padding-left:5px;"><b>'.$mode.'</b></span> *<br />
- Programme : <span style="padding-left:5px;"><b>'.$programme.'</b></span> <span style="font-size:10px;"><i>(1 : Manuel - 2 : Normal - 3 : Ouverture - 4 : Vitesse)</i></span><br />
- Correction d'exposition : <span style="padding-left:5px;">'.$cor_expo.'</span> IL<br /><br />
-
*<br />
<span style="font-size:8px;"><i> - <b>2</b> : Mesure Pondérée centrale (NIKON/ SONY/ OLYMPUS) ou Sélective (CANON) ou Centrale Pondérée (PENTAX) ou Moyenne (FUJI)<br />
- <b>3</b> : Mesure SPOT (CANON/ NIKON/ PENTAX/ SONY) ou Ponctuelle (OLYMPUS) ou Centrale (FUJI)<br />
- <b>4</b> : Mesure Moyenne à Prépondérance Centrale (CANON)<br />
- <b>5</b> : Mesure Matricielle (NIKON) ou Multizone (PENTAX/ SONY) ou Multi (FUJI) ou Evaluative (CANON) ou ZESP Numerique (OLYMPUS)<br />
- <b>255</b> : Pondérée hautes lumières (NIKON)</i></span><br /><br />
</td>
<td style="width:40%;vertical-align:top;text-align:left;padding-left:20px;border: solid #dcdcdc;font-family:verdana;font-size:12px;">
<b>Caractéristiques d'exposition :</b><br />
- Focale : <span style="padding-left:114px;">'.$focale.'</span><br />
- Vitesse d'obturation : <span style="padding-left:35px;">'.$vit_obt.'</span> ème de sec<br />
- ISO : <span style="padding-left:132px;">ISO-'.$iso.'</span><br />
- Diaphragme : <span style="padding-left:85px;">'.$ouverture.'</span><br/><br/>
<b>Copyright</b> :<span style="padding-left:10px;">'.$copyright.'</span><br/><br/>
<b>'.$mg3l_taille.' :</b> '.$mg3_taille.'<br /><br />
<!-- <b>'.$mg3l_auteur.' :</b> <a href="index.php?mod=mg3&ac=rech1&mc='.$mg3_auteur.'">'.$fn_infos->image-> img_auteur.'</a><br /><br /> -->
<b>Photographié le :</b> '.$mg3_jj.'/'.$mg3_mm.'/'.$mg3_aaaa.'<br /><br />
</td>
<td style="text-align:left;width:33,3%;vertical-align:top;"></td>
</tr>
</table><br />';
-
#####!!!#####
?>
Réponse ci-dessus postée le lundi 14 décembre 2020 : 09:03
Je viens de voir que le problème serait peut-être du à la version d'exif.
Les versions : 0230 et 0300 sont ok. L'affichage est correcte.
mais la version 0231 ne l'est pas.
Est-ce que c'est possible de modifier la version d'exif utilisé par nos apn ?