Discussion Trucs:Redimensionner des images
Sélection des images
Je ne suis pas expert dans l'utilisation de sed et awk, donc il y a peut-être plus efficace, mais avec la commande
file * |grep image|sed s/":"//g|awk '{print $1}'
on récupère la liste des fichiers reconnus par la commande file comme étant des images. Ainsi on rend compatible le script avec n'importe quel type d'image et on le rend insensible à la casse de l'extension.
Voici une version modifiée du script :
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Usage: './resizePictures.sh taille' avec la taille sous la forme largeurxhauteur (640x480)."
exit -1
fi
rep=resized-$1
if [ -d "$rep" ]; then
echo "Repertoire $rep existe. Je ne le crée pas."
else
echo "Repertoire $rep n'existe pas. Je le crée."
mkdir $rep
fi
for i in `file * |grep image|sed s/":"//g|awk '{print $1}'`
do
let "n += 1"
if [ -e $rep/$i ]; then
echo "Le fichier $i existe deja dans le repertoire $rep."
else
taille=`identify $i | awk '{print $3}'`
echo "Le fichier $i($taille) sera converti en $1 et enregistre dans le repertoire $rep."
convert -geometry $1 $i $rep/$i
fi
done
echo $n fichiers redimensionnés
<cadre type=aparte>
Attention cependant : cette version du script sélectionnera également tout fichier dont le nom contient la chaine de caractères "image".
</cadre>
Redimensionnement strict d'une image
Bonjour, j'aimerais donner un détail sur cette astuce.
Pour manipuler une image, convert est un outil très puissant. Un jour, j'ai du traiter un peu plus de 1000 images de tailles diverse pour en faire des miniatures 70x50.
En faisant la manipulation classique ci-dessous, nous obtenons des miniatures ayant au moins une coordonnée de respectée. On peut donc se retrouver avec des images de 60x50, 70x55, etc ... à cause de la mise a l'échelle automatique (ce qui peut être très ennuyeux ou pas).
la solution n'est pas très clair dans le manuel de convert mais il suffit juste d'ajouter un « ! » après votre coordonnée comme ceci :
Ce n'est pas grand chose mais ça fera peut être gagner quelques heures à quelqu'un.