Retouche d'image

Les personnes possédant un apareil photo numérique pensent peut-être que les redimentionner afin de les publier en ligne est assez rébarbatif.

J'ai créé un script permettant d'automatiser cette tâche.
Il permet de dimentionner des images et éventuellement de changer leur format.
Il n'est plus nécessaire de passer par un programme tier et de cliquer sur Enregistrer sous.

Le script utilise la commande convert de la suite ImageMagick etpropose deux options pour le redimentionnement:
  • -resize
    Cette option permet de redimentionner une image sans prendre en compte son format de départ. Il est possible que les images soient déformées.
  • -geometry
    Cette option permet de redimentionner une image en tenant compte de sa forme.
    Une des longueur données est gardée telle quelle et l'autre est ajustée pour réduire les déformations au maximum.
    Voici mon script.
    #!/bin/bash
    
    
    touch converture.tmp
    touch converture2.tmp
    
    echo "Extention d'entrée"
    read ext
    echo "Extention de sortie"
    read ext2
    echo "taille sortie"
    read taille
    echo "Qualité"
    read qual
    echo "convert  -resize 640x480 +profile "*" monfichier.jpeg monpetitfichier.png      ==> 1"
    echo "ou"
    echo "convert -geometry 640x480 +profile "*" image.jpg image_web.jpg  ==> 2"
    read "style"
    
    
    #convert  -resize 640x480 +profile "*" /un/chemin/monfichier.jpeg /un/chemin/petits/monpetitfichier.png
    
    #convert -geometry 640x480 +profile "*" image.jpg image_web.jpg
    
    
    ls |grep .$ext > converture.tmp
    
    
    for i in `cat converture.tmp`; do 
     
    
    name=$i
    
    echo ${name%.*} > converture2.tmp
    
    mv $i ${name%.*}
    
    
    for u in `cat converture2.tmp`; do
    
    if [ "$style" = "1" ]; then
    
    convert -resize $taille -quality $qual +profile "*" $u $u.$ext2
    
    fi
    if [ "$style" = "2" ]; then
    convert -geometry 640x480 -quality $qual +profile "*" $u $u.$ext2
    fi
    done
    done
    
    mkdir converture-rep
    mv *.$ext2 converture-rep
    
    for u in *; do
    
    if [ "$u" !=  "$converture-rep" ]; then
    rm  $u
    fi
    done
    
    cd converture-rep
    mv * ../
    
    
    
    cd ../ 
    rm -r converture-rep
    
    
    
    echo " "
    echo "#################################"
    echo "Terminé                          " 
    echo "#################################"
    ls
    
    
    exit 0
    
    
    Il serait plus simple et direct d'utiliser une synthaxe de ce genre (appliquée à la commande mv ici):
    mv mon_fichier.txt mon_fichier.que_je_veux_sauvegarder  
    
    il suffit de faire
    mv mon_fichier.{txt,que_je_veux_sauvegarder}
    
    Il aurait aussi été possible d'utiliser la commande sed dans le cadre d'un script qui ne permet que de renommer:
    for i in *.JPG
    do
    mv $i `echo $i | sed s/.JPG/.jpg/`
    done
    change toutes les extention JPG en jpg.
    
    Ces exemples ont étés trouvés ici.
    Arnaud Joset