Extension ImageMagick GPS Plugin Piwigo

De EjnTricks
Révision de 27 mai 2019 à 23:33 par Etienne (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

A l'origine ce plugin a été créé pour résoudre des anomalies de lecture des coordonnées GPS par la fonction read_exif_data. Cet article présente une modification apportée pour prendre en compte l'enemble des données EXIF.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Study icon.png Analyse

La lecture des données EXIF s'effectue dans la fonction on_format_exif_data du script include/imagemagickgps.class.inc.php.

                if ($conf['imagemagick_gps']['addAlwaysGpsData'] == false)
                {
                        /* Check for existing GPS position data */
                        $gpsExif = array_intersect_key($exif, array_flip(array('GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude')));
                        if (count($gpsExif) == 4)
                        {
                                return $exif;
                        }
                }

                /* configure search string */
                $gpsSearch = "";
                if ($conf['imagemagick_gps']['addOnlyPosition'])
                {
                        $gpsSearch = "exif:GPS*L*";
                }
                else
                {
                        $gpsSearch = "exif:GPS*";
                }

Dans un premier temps, il est nécessaire que la configuration addAlwaysGpsData soit positionné à true, ce qui est fait dans l'interface d'administration du plugin. De plus, si la configuration addOnlyPosition est positionné à false, toutes les données relatives au GPS sont prises en compte.

Il apparaît clairement qu'il faut donc modifier le critère de recherche dans ce cas pour ne pas se restreindre aux données GPS.


Update icon.png Patch

Afin de récupérer toutes les données EXIF retournées par ImageMagick, il suffit donc de libérer le filtre avec la valeur exif:*, au lieu de exif:GPS*. Le code source devient alors le suivant.

                if ($conf['imagemagick_gps']['addAlwaysGpsData'] == false)
                {
                        /* Check for existing GPS position data */
                        $gpsExif = array_intersect_key($exif, array_flip(array('GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude')));
                        if (count($gpsExif) == 4)
                        {
                                return $exif;
                        }
                }

                /* configure search string */
                $gpsSearch = "";
                if ($conf['imagemagick_gps']['addOnlyPosition'])
                {
                        $gpsSearch = "exif:GPS*L*";
                }
                else
                {
                        $gpsSearch = "exif:*";
                        // $gpsSearch = "exif:GPS*";
                }

Le fichier diff est donc le suivant.

56c56,57
<                       $gpsSearch = "exif:GPS*";^M
---
>                       $gpsSearch = "exif:*";^M
>                       // $gpsSearch = "exif:GPS*";^M

Ainsi toutes les données EXIF seront récupérées depuis les photos.

L'archive suivante contient le fichier modifié, patch.tar.gz.