Problème orientation image_reduire + convert + exifs
Pour reprendre la suite de filtres_images#4546
En résumé : sur une image qui contient une info d'orientation à 90° dans les exifs, convert prend en compte l'exif d'orientation dans image_reduire. On obtient donc une image dont l'orientation respècte l'info dispo dans les EXIFS, mais ça génère une balise img dans laquelle hauteur et largeur sont inversées.
Un ticket qui aborde le même problème par ici https://github.com/getkirby/kirby/issues/2695
L'option http://www.imagemagick.org/script/command-line-options.php#auto-orient pourrait nous sauver, mais cela ne fonctionne pas car _image_creer_vignette()
utilise des valeurs faussées pour la largeurxhauteur suite à ce que renvoie _image_ratio
ici https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/filtres_images_lib_mini.php#L1377
Autre piste pour ignorer l'exif d'orientation, la supprimer avec l'option http://www.imagemagick.org/script/command-line-options.php#strip
Ce qui donne le patch suivant, testé et approuvé, afin d'aligner le comportement de convert sur ce que fait GD :
diff --git a/ecrire/inc/filtres_images_lib_mini.php b/ecrire/inc/filtres_images_lib_mini.php
index eb63844ca2..05adfb11cf 100644
--- a/ecrire/inc/filtres_images_lib_mini.php
+++ b/ecrire/inc/filtres_images_lib_mini.php
@@ -1409,7 +1409,7 @@ function _image_creer_vignette($valeurs, $maxWidth, $maxHeight, $process = 'AUTO
define('_CONVERT_COMMAND', 'convert');
} // Securite : mes_options.php peut preciser le chemin absolu
if (!defined('_RESIZE_COMMAND')) {
- define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -resize %xx%y! %src %dest');
+ define('_RESIZE_COMMAND', _CONVERT_COMMAND . ' -quality ' . _IMG_CONVERT_QUALITE . ' -orient Undefined -resize %xx%y! %src %dest');
}
$vignette = $destination . '.' . $format_sortie;
$commande = str_replace(
J'applique le jalon SPIP 4.2, mais ça concerne toutes les branches supportées, donc report à prévoir pour 4.1, 4.0 et 3.2 si on merge d'ici demain :p