Inverser les dimensions des images avec un EXIF d'orientation en mode portrait ?
Le ticket #5778 concernant l'orientation des images en mode portrait (enfin, celle avec un exif d'Orientation à 6 ou 8) amène la question de l'affichage des dimensions de l'image.
De telles images présentent en effet des dimensions qui peuvent sembler inversées par rapport à des images en mode portait sans EXIF d'orientation, bien qu'elles soient conformes à ce que renvoient les données EXIF.
Par exemple:
La question est donc: doit-on "tricher" lors de l'upload de tels documents et enregistrer en base des largeur et hauteur inversées par rapport à ce que renvoie la commande spip_getimagesize()
?
L'endroit que j'ai identifié comme pertinent pour une telle action se situerait dans le plugin-dist medias : https://git.spip.net/spip/medias/-/blob/master/metadata/image.php?ref_type=heads#L16
La fonction metadata_image_dist
pourrait ainsi devenir quelque chose comme cela (une fois !5924 intégrée) :
function metadata_image_dist($fichier) {
$meta = [];
include_spip('inc/filtres_images_lib_mini');
$est_orientee_portrait = false;
if ($orientation = image_exif_obtenir_orientation($fichier)) {
$est_orientee_portrait = image_exif_determiner_si_portrait($orientation);
}
if ($size_image = @spip_getimagesize($fichier)) {
$meta['largeur'] = $est_orientee_portrait ? intval($size_image[1]) : intval($size_image[0]);
$meta['hauteur'] = $est_orientee_portrait ? intval($size_image[0]) : intval($size_image[1]);
$meta['type_image'] = decoder_type_image($size_image[2]);
}
return $meta;
}
À vous lire !