Le Journal de Nikrou - Mot-clé - scriptCe journal n'est pas un blog!2024-01-09T15:52:56+01:00urn:md5:501048fab0be4d1978e39dded54e4f42DotclearAfficher les photos dans le bon sensurn:md5:329e06ceacc6496c8623727f0ce5a34f2010-06-11T22:14:00+02:002016-02-07T15:39:12+01:00NicolasPhotosphotopiwigoscript<p>Lorsqu'on prend des photos avec un appareil on ne garde pas toujours l'appareil dans sa position "normale". On prend quelque fois des photos au format portrait. Elles ne sont pas toujours affichées correctement dans une galerie photo. Comment faire ?</p> <p>La plupart des appareils photos récents ont un capteur sensoriel permettant de déterminer l'orientation de l'appareil et d'écrire cette information dans le champ <acronym title="Exchangeable image file format" lang="en">EXIF</acronym> - orientation - de la photo.</p><p>L'axe du capteur repère les photos verticales et horizontales uniquement et donc il n'y a que 4 valeurs possibles pour l'orientation. La valeur "normale", quand l'appareil est dans la position standard est 1. Par exemple avec une belle image de vache comme celle-ci :</p><p><img alt="" src="https://www.nikrou.net/public/vaches.png" /></p><p>Ce qui est perturbant dans l'histoire et qui est source d'incompréhension, c'est que l'appareil photo a une fonctionnalité qui permet de tourner automatiquement la photo. De même de nombreux logiciels tournent les photos automatiquement. Du coup on ne comprend pas toujours pourquoi elles se retrouvent dans le mauvais sens lorsqu'on les affiche dans notre <a rel="external" hreflang="fr" href="http://fr.piwigo.org/">galerie préférée</a>.</p><p>Il existe de nombreuses méthodes pour corriger ce problème. Pour ma part, j'utilise <a rel="external" hreflang="en" href="http://www.imagemagick.org/">ImageMagick</a>, dans un petit script pour appliquer par exemple la correction à toutes les images d'un répertoire :</p>
<pre class="language-bash"><code>#!/bin/sh
for i in *.jpg;
do
echo $i;
o=$(identify -format "%[exif:orientation]" $i);
if [ $o -eq 8 ]; then
convert -rotate -90 $i $i
elif [ $o -eq 6 ]; then
convert -rotate 90 $i $i
elif [ $o -eq 3 ]; then
convert -rotate 180 $i $i
fi
done</code></pre>