[RESOLU] Données EXIF d'une image et coordonnées GPS

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Données EXIF d'une image et coordonnées GPS

Re: [RESOLU] Données EXIF d'une image et coordonnées GPS

par jls35 » 20 nov. 2024, 21:38

il est possible de faire 2 choses, le système actuel.
et en plus afficher une seule carte avec la position des photos.
Tu as tout compris c'est exactement ce que je veux faire. La carte sera plus pour avoir une vue aérienne du parcours en fonction des images. :lol:
Et je ne veux pas d'un truc où il faut saisir à la mano le chemin des images, j'ai à peine commencer à charger mon dossier d'images et j'en suis à plus de 100 et il m'en reste encore pas mal et en juin je pars pour 15 jours de road trip en Andalousie et là il va y avoir de la photossssss :mrgreen:
D'abord il faut que j'arrive à me mettre dans la tête le principe de fonctionnement, récupérer les images du dossier, charger les coordonnées GPS, charger la carte et enfin positionner les curseurs, avec au survol apparition de l'image. Bref si j'arrive à faire ça je peux me faire embaucher comme webmaster pff mais non j'suis à la retraite #-o #-o #-o :mrgreen: :mrgreen: :mrgreen:

Re: [RESOLU] Données EXIF d'une image et coordonnées GPS

par or 1 » 20 nov. 2024, 21:14

il est possible de faire 2 choses, le système actuel.
et en plus afficher une seule carte avec la position des photos.

Re: [RESOLU] Données EXIF d'une image et coordonnées GPS

par jls35 » 20 nov. 2024, 20:22

C'est la prochaine étape mais le PB de ce script c'est que les images sont très petites et je pense qu'il faut donner le lien des images à la mano donc pas terrible, je préfère essayer de faire comme pour mon script un truc qui va chercher les images dans un dossier et qui se débrouille tout seul.
Ma base de départ est de présenter des images qui peuvent servir de fonds d'écran
Et donc il faut les voir, comme ce sont des photos prisent lors de mes road trip j'ai trouvé sympa l'idée de pouvoir les géolocaliser, la carte permettra de voir le cheminement complet.

Re: [RESOLU] Données EXIF d'une image et coordonnées GPS

par or 1 » 20 nov. 2024, 18:58

10 images dont je veux connaitre la position, 10 clics qui m'ouvrent 10 pages google maps. ce n'est pas l'idéal.

un code qui permet d'afficher une image sur une carte selon sa position :
https://stackoverflow.com/questions/415 ... javascript

Re: [RESOLU] Données EXIF d'une image et coordonnées GPS

par @rthur » 20 nov. 2024, 15:08

Top, félicitations !

Re: Données EXIF d'une image et coordonnées GPS

par jls35 » 20 nov. 2024, 14:19

Bon ben j'ai finalement réussi je suis trop fier de moi
Le lien vers google maps fonctionne et cerise sur le gâteau à partir d'une image
Voici le code il doit y avoir plus simple mais ça fonctionne et pour moi c'est le principal
//debut de la création du lien vers google maps 
$lati = $result['latitude'];
$longi = $result['longitude']; 
$virg = ','; 
$page = "";
 $url = 'http://www.google.fr/maps/place/'; 
 $text = "Voir le lieu de la photo sur Google Maps";
 $page .= '<a title="Voir le lieu de la prise de vue sur Google Maps" target="_blank" href="'.$url.$lati.$virg.$longi.'"><img src="../images/mise-en-page/google-maps.jpg"/></a>';
 echo $page;
 echo '<br>';
//fin de la création du lien vers google maps
Et ci-dessous le code complet pour avoir en PHP une galerie d'images qui se charge automatiquement à partir d'un dossier unique, cette galerie tiendra compte des donnée EXIF de l'image et vous permettra d'afficher le nom de la photo, le titre de la photo, le commentaire, les données GPS, l'altitude, la date et l'heure de la prise de la photo, le logiciel de retouche si utilisé et enfin un lien vers google Maps pour voir où a été prise la photo.
Il faut bien sur que la photo soit renseignée, il y a pas mal d'éditeur "exif" pour ça.
Voici le code
<html>

<head>
</head>
<body >	
 		
		<div align="center">
	<table border="0" width="480">
		<tr>
			<td align="center" style="font-family: Comic Sans MS; font-size: 18pt">
			&nbsp;</td>
		</tr>
	</table>
<?php
$dir="1";
$dossier=opendir($dir);
while(false!==($files=readdir($dossier))) {
 
    if(in_array(strtolower(pathinfo($files,PATHINFO_EXTENSION)), array('jpg', 'jpeg', 'tif', 'tiff', 'gif', 'png', 'bmp'))){
 
        $listfiles[]=$files;
    }
}
closedir($dossier);
rsort($listfiles);  //rsort ordre inverse alphabétique sort ordre alphabétique
$nbe=count($listfiles);
//Les parametres
if (!empty($_GET['parPage'])) { //Nombre d'image par page
 
   $images_par_page=intval($_GET['parPage']);
}
else $images_par_page = 14;
 
if (!empty($_GET['image_debut'])) {//L'index de la première image à afficher dans cette page
 
   $index_image_debut = intval($_GET['image_debut']);
}
else $index_image_debut = 0;
 
//L'index de la dernière
if ($nbe < ($index_image_debut + $images_par_page)) {//Pour ne pas essayer d'afficher plus d'images qu'on en a
    
   $index_image_fin = $nbe - 1 ;
}
else $index_image_fin = $index_image_debut + $images_par_page;
 
$nbe_pages_=$nbe/($images_par_page+1);
$nbe_pages=ceil($nbe_pages_);
 
//Affichage de la galerie
for ($i=$index_image_debut;$i<=$index_image_fin;$i++) {
     
    $lien=$dir.'/'.$listfiles[$i];
    unset($exif_tab); //réinitialisation du tableau exif_tab
 
 if(in_array(strtolower(end(explode('.', $listfiles[$i]))), array('jpg', 'jpeg', 'tif', 'tiff'))) // Si fichier Jpeg ou Tiff
  {
    if($exif = exif_read_data($lien, EXIF, true)) // Si le fichier $listfiles[$i] contient des infos Exif
    {
     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['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['DateTimeOriginal'])
     $date = $exif_tab['DateTimeOriginal']; // Date de la prise de vue (heure de l'appareil)
   if($exif_tab['Software']) // Si l'information sur le logiciel existe
     $logiciel = $exif_tab['Software'];
   if($exif_tab['GPSAltitude']) // Altitude
     $GPSAltitude = $exif_tab['GPSAltitude'];
   if($exif_tab['GPSLatitudeRef']) // Latitude Ref
     $GPSLatitudeRef = $exif_tab['GPSLatitudeRef'];
   if($exif_tab['GPSLongitudeRef']) // Longitude Ref
     $GPSLongitudeRef = $exif_tab['GPSLongitudeRef'];


   // 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
  
   // De même pour obtenir l'heure
   $heure2 = current($heure); // Je lis la valeur courante de heure
   $minute = next($heure); // Puis la suivante (c'est un tableau)
   $seconde = next($heure); // Puis la suivante
   }
  }
 
 unset($auteur, $titre, $commentaire); //réinitialisation des variables
 GetImageSize ($lien,$info);
 if (isset($info["APP13"])) //lecture des informations IPTC
 {
   $iptc = iptcparse ($info["APP13"]);
   $commentaire = $iptc["2#120"][0];
 } 
echo '<table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td align="center" valign="middle"><a title="Les wallpapers du site Jeep Wrangler JKU" target="_blank" href="'.$lien.'"><img border="4" class="img" alt="'.$lien.'" height="480" src="'.$lien.'"/></a></td>
</tr>
<tr>
<td align="center" valign="middle">
<p><font size="4" face="Comic Sans MS">';

// debut recherche coordonnées GPS
		$LatM = 1;
        $LongM = 1;
        $GPSLatitudeRef=$exif['GPS']['GPSLatitudeRef'];
        if ("$GPSLatitudeRef" == 'S') {
            $LatM = -1;
        }
        $GPSLongitudeRef=$exif['GPS']['GPSLongitudeRef'];
        if ("$GPSLongitudeRef" == 'W') {
            $LongM = -1;
        }
        // Get the GPS data
        $gps['LatDegree'] = $exif['GPS']["GPSLatitude"][0];
        $gps['LatMinute'] = $exif['GPS']["GPSLatitude"][1];
        $gps['LatgSeconds'] = $exif['GPS']["GPSLatitude"][2];
        $gps['LongDegree'] = $exif['GPS']["GPSLongitude"][0];
        $gps['LongMinute'] = $exif['GPS']["GPSLongitude"][1];
        $gps['LongSeconds'] = $exif['GPS']["GPSLongitude"][2];
        //convert strings to numbers
        foreach ($gps as $key => $value) {
            $pos = strpos($value, '/');
            if ($pos !== false) {
                $temp = explode('/', $value);
                $gps[$key] = $temp[0] / $temp[1];
            }
        }
        //calculate the decimal degree
        $result['latitude'] = $LatM * ($gps['LatDegree'] + ($gps['LatMinute'] / 60) + ($gps['LatgSeconds'] / 3600));
        $result['longitude'] = $LongM * ($gps['LongDegree'] + ($gps['LongMinute'] / 60) + ($gps['LongSeconds'] / 3600));
// fin recherche coordonnées GPS 
// Affichage des résultats   
//conditionne l affichage du nom du fichier à son existence
 echo 'Nom du fichier : '; 
 echo ''.substr($listfiles[$i],0,-10).'<br>';  //substr permet de réduire l afiichage pour ne pas voir l extension du fichier
//conditionne l affichage du titre à son existence
if (isset($titre))
 echo '<b><u>'.$titre.'</u></b><br>';
//conditionne l affichage du commentaire à son existence
if (isset($commentaire))
 echo 'Localisation : '.$commentaire.'<br>'; 
 // affichage des coordonnees GPS 
 echo ' Coordonnées GPS ', ($result['latitude']),'  ',($result['longitude']),' <br> '; 
  // affichage altitude 
 if (isset($GPSAltitude))
 echo 'Altitude : '.substr($GPSAltitude,0,-2).'m.<br>';
 //conditionne l affichage de la date à  son existence
 echo 'Photo prise ';
if (isset($date))
 echo ' le '.$jour.'/'.$mois.'/'.$annee.', à  '.$heure2.'h '.$minute.'min '.$seconde.'s,'; 
if (isset($marque)||isset($modele))
//conditionne l affichage du modèle d'appareil photo à son existence
 echo'<br> avec un '.$marque.' '.$modele.'.<br>'; 
//conditionne l affichage du logiciel à son existence
if (isset($logiciel))
 echo 'Modifiée avec '.$logiciel.'.<br>'; 
 //debut de la création du lien vers googlle maps 
$lati = $result['latitude'];
$longi = $result['longitude']; 
$virg = ','; 
$page = "";
 $url = 'http://www.google.fr/maps/place/'; 
 $text = "Voir le lieu de la photo sur Google Maps";
 $page .= '<a title="Voir le lieu de la prise de vue sur Google Maps" target="_blank" href="'.$url.$lati.$virg.$longi.'"><img src="images/mise-en-page/google-maps.jpg"/></a>';
 echo $page;
 echo '<br>';
 //fin de la création du lien vers googlle maps 
// fin des résultats 
 echo '
  
</font></p>
</td>
</tr>
</tbody>
</table>
';
unset($date, $jour, $mois, $annee, $heure2, $minute, $seconde, $marque, $modele, $logiciel); //réinitialisation des variables
}
 
?></div>
</body>

</html>

Re: Données EXIF d'une image et coordonnées GPS

par jls35 » 19 nov. 2024, 20:42

Bon c'est vraiment pas facile mon affaire
Ce que je veux faire
c'est récupérer la latitude plus la longitude pour l'inclue dans un lien sous PHP pour faire ouvrir google maps pour afficher la position de l'image.
J'ai commencé par cette ligne pour vérifier si cela fonctionnait un lien sous PHP avec la latitude et longitude à la main et effectivement ça fonctionne.
echo '<br>';
echo '<a lecode="lecode://googlefr/maps/place/42.209885 -1.51474">Google maps</a>';
echo '<br>';
Du coup il me reste plus qu'à trouver le moyen de rendre la chose automatique sachant que j'ai déjà du code qui me récupère pour chaque image les coordonnées
J'ai tenté pas mal de chose mais non ca ne fonctionne pas pour avoir les coordonnées automatiquement j'ai vérifié le code par un echo
echo ($result['latitude']),' ',($result['longitude']); et cela fonctionne j'ai exactement la même chose que ce que j'ai renseigné dans le lien donné plus haut.
J'ai alors essayé ce code
echo '<a le codehref="lecode://googlefr/maps/place/<?php echo ($result['latitude']),' ',($result['longitude'])?>">Google maps</a>';
Mais hélas rien ça me plante tout voilà le message d'erreur :
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /mnt/116/sdb/a/b/xxxxxxxx/2.php on line 160

Elle est où l'erreur???

Re: Données EXIF d'une image et coordonnées GPS

par jls35 » 19 nov. 2024, 17:57

Bon finalement j'ai trouvé à partir du lien donné mais avec des modifications de codes car il y a des erreurs voilà le code complet de la page qui donne pas mal d'informations sur des photos qui ont été renseignées en données EXIF
Me reste une dernière chose à faire c'est à partir des coordonnées GPS faire un lien vers google maps et bien sur en PHP

<html>
<head>

</head>
<body >

<div align="center">
<table border="0" width="480">
<tr>
<td align="center" style="font-family: Comic Sans MS; font-size: 18pt">
&nbsp;</td>
</tr>
</table>
<?php
$dir="1"; // donner ici le chemin du dossier qui contient les photos à afficher
$dossier=opendir($dir);
while(false!==($files=readdir($dossier))) {

if(in_array(strtolower(pathinfo($files,PATHINFO_EXTENSION)), array('jpg', 'jpeg', 'tif', 'tiff', 'gif', 'png', 'bmp'))){

$listfiles[]=$files;
}
}
closedir($dossier);
rsort($listfiles); //rsort ordre inverse alphabétique sort ordre alphabétique
$nbe=count($listfiles);
//Les parametres
if (!empty($_GET['parPage'])) { //Nombre d'image par page

$images_par_page=intval($_GET['parPage']);
}
else $images_par_page = 14;

if (!empty($_GET['image_debut'])) {//L'index de la première image à afficher dans cette page

$index_image_debut = intval($_GET['image_debut']);
}
else $index_image_debut = 0;

//L'index de la dernière
if ($nbe < ($index_image_debut + $images_par_page)) {//Pour ne pas essayer d'afficher plus d'images qu'on en a

$index_image_fin = $nbe - 1 ;
}
else $index_image_fin = $index_image_debut + $images_par_page;

$nbe_pages_=$nbe/($images_par_page+1);
$nbe_pages=ceil($nbe_pages_);

//Affichage de la galerie
for ($i=$index_image_debut;$i<=$index_image_fin;$i++) {

$lien=$dir.'/'.$listfiles[$i];
unset($exif_tab); //réinitialisation du tableau exif_tab

if(in_array(strtolower(end(explode('.', $listfiles[$i]))), array('jpg', 'jpeg', 'tif', 'tiff'))) // Si fichier Jpeg ou Tiff
{
if($exif = exif_read_data($lien, EXIF, true)) // Si le fichier $listfiles[$i] contient des infos Exif
{
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['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['DateTimeOriginal'])
$date = $exif_tab['DateTimeOriginal']; // Date de la prise de vue (heure de l'appareil)
if($exif_tab['Software']) // Si l'information sur le logiciel existe
$logiciel = $exif_tab['Software'];
if($exif_tab['GPSAltitude']) // Altitude
$GPSAltitude = $exif_tab['GPSAltitude'];
if($exif_tab['GPSLatitudeRef']) // Latitude Ref
$GPSLatitudeRef = $exif_tab['GPSLatitudeRef'];
if($exif_tab['GPSLongitudeRef']) // Longitude Ref
$GPSLongitudeRef = $exif_tab['GPSLongitudeRef'];


// 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

// De même pour obtenir l'heure
$heure2 = current($heure); // Je lis la valeur courante de heure
$minute = next($heure); // Puis la suivante (c'est un tableau)
$seconde = next($heure); // Puis la suivante
}
}

unset($auteur, $titre, $commentaire); //réinitialisation des variables
GetImageSize ($lien,$info);
if (isset($info["APP13"])) //lecture des informations IPTC
{
$iptc = iptcparse ($info["APP13"]);
$commentaire = $iptc["2#120"][0];
}
echo '<table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td align="center" valign="middle"><a title="Les wallpapers du site Jeep Wrangler JKU" target="_blank" href="'.$lien.'"><img border="4" class="img" alt="'.$lien.'" height="480" src="'.$lien.'"/></a></td>
</tr>
<tr>
<td align="center" valign="middle">
<p><font size="4" face="Comic Sans MS">';

// debut recherche coordonnées GPS
$LatM = 1;
$LongM = 1;
$GPSLatitudeRef=$exif['GPS']['GPSLatitudeRef'];
if ("$GPSLatitudeRef" == 'S') {
$LatM = -1;
}
$GPSLongitudeRef=$exif['GPS']['GPSLongitudeRef'];
if ("$GPSLongitudeRef" == 'W') {
$LongM = -1;
}
// Get the GPS data
$gps['LatDegree'] = $exif['GPS']["GPSLatitude"][0];
$gps['LatMinute'] = $exif['GPS']["GPSLatitude"][1];
$gps['LatgSeconds'] = $exif['GPS']["GPSLatitude"][2];
$gps['LongDegree'] = $exif['GPS']["GPSLongitude"][0];
$gps['LongMinute'] = $exif['GPS']["GPSLongitude"][1];
$gps['LongSeconds'] = $exif['GPS']["GPSLongitude"][2];
//convert strings to numbers
foreach ($gps as $key => $value) {
$pos = strpos($value, '/');
if ($pos !== false) {
$temp = explode('/', $value);
$gps[$key] = $temp[0] / $temp[1];
}
}
//calculate the decimal degree
$result['latitude'] = $LatM * ($gps['LatDegree'] + ($gps['LatMinute'] / 60) + ($gps['LatgSeconds'] / 3600));
$result['longitude'] = $LongM * ($gps['LongDegree'] + ($gps['LongMinute'] / 60) + ($gps['LongSeconds'] / 3600));
// fin recherche coordonnées GPS

// Affichage des résultats

if (isset($commentaire))
echo 'Localisation : '.$commentaire.'<br>'; //conditionne l affichage du commentaire à son existence
echo ' Coordonnées GPS ';
echo $result['latitude'];
echo ' ';
echo $result['longitude'];
echo ' <br> ';
if (isset($GPSAltitude))
echo 'Altitude : '.substr($GPSAltitude,0,-2).'m.<br>';
echo 'Photo prise ';
if (isset($date))
echo ' le '.$jour.'/'.$mois.'/'.$annee.', à  '.$heure2.'h '.$minute.'min '.$seconde.'s,'; //conditionne l affichage de la date à  son existence
if (isset($marque)||isset($modele))
echo'<br> avec un '.$marque.' '.$modele.'.<br>'; //conditionne l affichage du modèle d'appareil photo à son existence
if (isset($logiciel))
echo 'Modifiée avec '.$logiciel.'.<br>'; //conditionne l affichage du logiciel à son existence
echo '
// fin des résultats
</font></p>
</td>
</tr>
</tbody>
</table>
';
unset($date, $jour, $mois, $annee, $heure2, $minute, $seconde, $marque, $modele, $logiciel); //réinitialisation des variables
}

?>
</body>
</html>

Re: Données EXIF d'une image et coordonnées GPS

par jls35 » 19 nov. 2024, 13:59

Merci j'avais déjà vu ce poste comme beaucoup d'autre d'ailleurs mais mon PB c'est que je n'arrive pas à l'intégrer dans mon script de page et j'ai déjà essayé d'extraire un partie du code pour l'intégrer au mien mais hélas pas moyen mes connaissances sont quasi nulles

Re: Données EXIF d'une image et coordonnées GPS

par @rthur » 19 nov. 2024, 13:39

Bonjour et bienvenue sur PHPfrance,

Voici une piste pour t'aider :
https://github.com/diversen/gps-from-ex ... er/gps.php

Données EXIF d'une image et coordonnées GPS

par jls35 » 18 nov. 2024, 19:49

Bonjour à tous
Cela fait un moment que j'essaye de faire fonctionner un code qui doit permettre l'affichage automatique des coordonnées GPS d'une photo.
Le but étant d'utiliser les données EXIF d'une photo pour faire une page de fonds d'écran sur mon site
Les images sont stockées dans un dossier unique et le script vient automatiquement chercher ces images pour exploiter les données EXIF et les mettre en page.
J'ai trouvé une base de script PHP que j'ai modifié pur le mettre à mon gout.
Et pour finir il me reste à faire fonctionner les coordonnées GPS
J'arrive bien à sortir les latitude et longitude avec aussi l'altitude mais hélas le format affiché n'est pas terrible voilà ce que j'arrive à faire apparaitre :
Latitude : N 48° 13' 5268/625/100" Longitude : W 1° 30' 123597/2500/100"
Le format donné par PHP après l'extraction EXIF est par exemple pour la latitude 48/1 13/1 5268/625 j'ai donc tâtonné pour arriver à masquer les /1 pour le 48 et le 13 mais je n'arrive vraiment pas à faire faire la grande division
Le code qui me permet d'afficher la latitude
if (isset($GPSLatitudeRef))
 echo 'Latitude : '.$GPSLatitudeRef.' '; 
$latitude = $exif['GPS']['GPSLatitude'];
echo "" .substr( $latitude[0],0,-2) ."°  ".substr( $latitude[1],0,-2) ."' ".$latitude[2].'/100"  '
Et le code complet de la page
Alors si quelqu'un peut m'aider :mrgreen:
<html>
<head>
</head>
<body > 		
	<div align="center">
	<table border="0" width="480">
		<tr>
			<td align="center" style="font-family: Comic Sans MS; font-size: 18pt">&nbsp;</td>
		</tr>
	</table>
<?php
$dir="1";
$dossier=opendir($dir);
while(false!==($files=readdir($dossier))) 
{
   if(in_array(strtolower(pathinfo($files,PATHINFO_EXTENSION)), array('jpg', 'jpeg', 'tif', 'tiff', 'gif', 'png', 'bmp'))){
 
        $listfiles[]=$files;
    }
}
closedir($dossier);
rsort($listfiles);  //rsort ordre inverse alphabétique sort ordre alphabétique
$nbe=count($listfiles);
//Les parametres
if (!empty($_GET['parPage'])) { //Nombre d'image par page
 
   $images_par_page=intval($_GET['parPage']);
}
else $images_par_page = 14;
 
if (!empty($_GET['image_debut'])) {//L'index de la première image à afficher dans cette page
 
   $index_image_debut = intval($_GET['image_debut']);
}
else $index_image_debut = 0;
 
//L'index de la dernière
if ($nbe < ($index_image_debut + $images_par_page)) {//Pour ne pas essayer d'afficher plus d'images qu'on en a
    
   $index_image_fin = $nbe - 1 ;
}
else $index_image_fin = $index_image_debut + $images_par_page;
 
$nbe_pages_=$nbe/($images_par_page+1);
$nbe_pages=ceil($nbe_pages_);
 
//Affichage de la galerie
for ($i=$index_image_debut;$i<=$index_image_fin;$i++) {
     
    $lien=$dir.'/'.$listfiles[$i];
    unset($exif_tab); //réinitialisation du tableau exif_tab
 
 if(in_array(strtolower(end(explode('.', $listfiles[$i]))), array('jpg', 'jpeg', 'tif', 'tiff'))) // Si fichier Jpeg ou Tiff
  {
    if($exif = exif_read_data($lien, EXIF, true)) // Si le fichier $listfiles[$i] contient des infos Exif
    {
     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['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['DateTimeOriginal'])
     $date = $exif_tab['DateTimeOriginal']; // Date de la prise de vue (heure de l'appareil)
   if($exif_tab['Software']) // Si l'information sur le logiciel existe
     $logiciel = $exif_tab['Software'];
   if($exif_tab['GPSAltitude']) // Altitude
     $GPSAltitude = $exif_tab['GPSAltitude'];
   if($exif_tab['GPSLatitudeRef']) // Latitude Ref
     $GPSLatitudeRef = $exif_tab['GPSLatitudeRef'];
   if($exif_tab['GPSLongitudeRef']) // Longitude Ref
     $GPSLongitudeRef = $exif_tab['GPSLongitudeRef'];

   // 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
  
   // De même pour obtenir l'heure
   $heure2 = current($heure); // Je lis la valeur courante de heure
   $minute = next($heure); // Puis la suivante (c'est un tableau)
   $seconde = next($heure); // Puis la suivante
   }
  }
 
 unset($auteur, $titre, $commentaire); //réinitialisation des variables
 GetImageSize ($lien,$info);
 if (isset($info["APP13"])) //lecture des informations IPTC
 {
   $iptc = iptcparse ($info["APP13"]);
   $commentaire = $iptc["2#120"][0];
 } 
echo '<table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td align="center" valign="middle"><a title="Les wallpapers du site Jeep Wrangler JKU" target="_blank" href="'.$lien.'"><img border="4" class="img" alt="'.$lien.'" height="480" src="'.$lien.'"/></a></td>
</tr>
<tr>
<td align="center" valign="middle">
<p><font size="4" face="Comic Sans MS">';
//affichage d'un commentaire sur le lieu de la prise de la photo
if (isset($commentaire))
 echo 'Localisation : '.$commentaire.'<br>'; //conditionne l affichage du commentaire à son existence
//affichage des coordonnées GPS
//la latitude
if (isset($GPSLatitudeRef))
 echo 'Latitude : '.$GPSLatitudeRef.' '; 
$latitude = $exif['GPS']['GPSLatitude'];
echo "" .substr( $latitude[0],0,-2) ."°  ".substr( $latitude[1],0,-2) ."' ".$latitude[2].'/100"  ';
//la longitude
if (isset($GPSLongitudeRef))
 echo 'Longitude : '.$GPSLongitudeRef.' ';
$longitude = $exif['GPS']['GPSLongitude'];
echo "" .substr( $longitude[0],0,-2) ."°  ".substr( $longitude[1],0,-2) ."' ".$longitude[2].'/100"  ';
//l'altitude
if (isset($GPSAltitude))
 echo '<br>Altitude : '.substr($GPSAltitude,0,-2).'m.<br>';
//date de la prise de vue
 echo 'Photo prise ';
if (isset($date))
 echo ' le '.$jour.'/'.$mois.'/'.$annee.', à '.$heure2.'h '.$minute.'min '.$seconde.'s,'; //conditionne l affichage de la date à son existence
if (isset($marque)||isset($modele))
 echo'<br> avec un '.$marque.' '.$modele.'.<br>'; //conditionne l affichage du modèle d'appareil photo à son existence
if (isset($logiciel))
 echo 'Modifiée avec '.$logiciel.'.<br>'; //conditionne l affichage du logiciel à son existence
 echo '
 </font></p>
</td>
</tr>
</tbody>
</table>
';
unset($date, $jour, $mois, $annee, $heure2, $minute, $seconde, $marque, $modele, $logiciel); //réinitialisation des variables
}
?>
</body>
</html>