Extension ImageMagick GPS Plugin Piwigo : Différence entre versions
m |
(Aucune différence)
|
Version actuelle en date du 27 mai 2019 à 23:33
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.
Votre avis
Nobody voted on this yet
|
|
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.
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.