« Discussion Trucs:Redimensionner des images » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
m (Redimensionnement strict d'une image)
Ligne 48 : Ligne 48 :
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.
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).
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).
<div class="code">convert -geometry 70x50 image_ori.png image_mini.png</div>
<div class="code">convert -geometry 70x50 image_ori.png image_mini.png</div>



Version du 17 août 2006 à 06:53

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).

convert -geometry 70x50 image_ori.png image_mini.png

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 :

convert -geometry 70x50! image_ori.png image_mini.png

Ce n'est pas grand chose mais ça fera peut être gagner quelques heures à quelqu'un.