#1 2016-11-02 14:05:19

Karen
Invité

read_exif_data ne lit plus les coordonnées GPS

Chère communauté

J'ai besoin de vous pour résoudre un bug qui m'est arrivé hier. J'ai un Canon 600D, et j'utilise dans ma gallery OpenStreetMap. Jusque là aucun problème, la dernière synchro a été faite il y a 2 semaines.

Mais hier, lors de la synchro (Outils > Synchronisation), les latitude/longitude ne sont plus lues. J'ai remonté le bug jsuqu'à la fonction "read_exif_data".
En gros, pour les photos qui ne sont PAS faites avec un Canon, les coordonnées sont bien importées. Pour les photos faites avec le Canon, les informations n'apparaissent plus.

J'ai fait un test simple pour bien expliquer:
- 2 photos, canon.jpg et not_canon.jpg, toutes deux avec des lat/lon

- Avec exiftool, je vois les coordonnées dans les 2 photos:
http://pastebin.com/CqzBFwhp

- Avec read_exif_data, elles apparaissent juste dans not_canon.jpg:
<?php
$filename = "././galleries/canon.jpg";
$exif=@read_exif_data($filename);
echo "<pre>";var_dump($exif);echo "</pre>";
$filename = "././galleries/not_canon.jpg";
$exif=@read_exif_data($filename);
echo "<pre>";var_dump($exif);echo "</pre>";
?>

Et le résultat
http://pastebin.com/SmRvpC8F
(testé avec 2 version: php5 Version: 5.6.26 and 5.6.27)

Une idée de ce qu'il se passe? Pensez-vous que c'est un bug de read_exif_data ou est-ce que je suis passée à côté de quelque chose d'évident?
Merci beaucoup

Version de Piwigo: 2.8.2
Version de PHP: 5.6.26 et ou 5.6.27

#2 2016-11-02 14:08:52

plg
Équipe Piwigo
Nantes, France, Europe
2002-04-05
12181

Re: read_exif_data ne lit plus les coordonnées GPS

Bonjour Karen,

Là comme ça immédiatement, je pense à [Github] Piwigo issue #520 : regarde un peu et dis moi si c'est pas équivalent.


Dernier billet du blog Piwigo.com (21 mars 2017) Offres Piwigo.com Entreprise, enfin officielles !

Hors ligne

#3 2016-11-02 15:03:10

Karen
Membre
2016-11-02
2

Re: read_exif_data ne lit plus les coordonnées GPS

Bonjour Pierrick,

Merci de ta réponse rapide. J'avais trouvé ce rapport de bug, mais ils sont sur du PhP version 7, je suis sur une version 5...
Je vais creuser un peu cette question, mais si je ne trouve rien je vais peut-être contacter les gens de PhP car tout semble ramener vers eux.
Je tiendrai au courant quand (si) ce sera fixé, pour le cas où d'autres utilisateurs aient le même problème

Merci !

Hors ligne

#4 2016-11-02 15:18:51

Karen
Membre
2016-11-02
2

Re: read_exif_data ne lit plus les coordonnées GPS

Okay donc apparemment pleins de versions différentes de php sont impactées.

Pour l'instant je me suis fait un hack rapide pour utiliser exiftool à la place de read_exif_data

Dans la fonction get_exif_data, j'ai ajouté:
+    $result['longitude'] = shell_exec('/usr/bin/exiftool ' . $filename . ' -GPSLongitude -b');
+    $result['latitude'] = shell_exec('/usr/bin/exiftool ' . $filename . ' -GPSLatitude -b');

et supprimé toute la partie utilisant read_exif_data.

C'est bien moche et évidemment beaucoup plus lent mais au moins j'ai retrouvé mes informations GPS.

Hors ligne

#5 2016-11-02 18:42:54

Joubu
Membre
2016-11-02
1

Re: read_exif_data ne lit plus les coordonnées GPS

Je suis sur le même projet que Karen et me permet de remonter où j'en suis arrivé.
Je confirme donc ce que tous les autres ont trouvé avant moi, il s'agit bien de la fonction read_exif_data qui foire dans certaines (beaucoup) versions de php. Les données GPS ne sont pas récupérées lorsque la section MakerNotes est présente.

J'ai commencé par un truc vraiment pas joli pour que ça soit automatique: suppression de la note foireuse lors de l'import:

Code:

diff --git a/include/functions_metadata.inc.php b/include/functions_metadata.inc.php
index 3d35900..a3b2b84 100644
--- a/include/functions_metadata.inc.php
+++ b/include/functions_metadata.inc.php
@@ -183,6 +183,15 @@ function get_exif_data($filename, $map)
 
     // GPS data
     $gps_exif = array_intersect_key($exif, array_flip(array('GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude')));
+    if (count($gps_exif) != 4)
+    {
+        // If MakerNotes, read_exif_data does not manage to retrieve GPS data correctly (php bug)
+        if ( isset($exif['SectionsFound']) and strpos($exif['SectionsFound'], 'MAKERNOTE' ) ) {
+            shell_exec('/usr/bin/exiftool -makernotes= ' . $filename);
+            $exif = @read_exif_data($filename);
+            $gps_exif = array_intersect_key($exif, array_flip(array('GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude')));
+        }
+    }
     if (count($gps_exif) == 4)
     {
       if (

Pour finalement me dire que modifier les images avant upload c'était quand même la manière la plus adaptée.

Code:

exiftool -overwrite_original_in_place -makernotes= **/*.JPG

Hors ligne

Pied de page des forums

Propulsé par FluxBB