Redimensionner plusieurs images sous linux

Je sais que parmis vous … même si il ne l’avoueront jamais, vous utiliser Gimp (ou un autre) pour redimensionner vos images. Même quand vous en avez 20 ou 30 …
C’est long … très très très long.

Donc même si l’idée à déjà été réaliser par je ne sais combien de linuxien … j’ai décider d’apporter mon crépie à l’édifice.



En fait l’idée m’est venu quand j’ai voulu mettre l’ensemble de mes photos du concert d’ACDC sur le site.

Le truc c’est que je les ai mise dans leurs taille d’origine. Et en suite j’ai installer le Widget lightBox (qui permet de faire des slide sympa pour les photos) … et là c’est le drame … :

Les images d’origine faisait 2816×2120 … un peu bcp pour les gars qui on un laptop avec une resolution de 1024×600 … 😉

Donc j’ai tout de suite pensé à ce package magique qui est imagemagick (hum … désolé pour le jeu de mot … )

ImageMagik contient une tétra chier d’outils dont convert, Display, Import
(pour l’installez faite sudo apt-get intall imagemagik pour debian/ubutnu et sudo urpmi imagemagik pour mandriva)

(pour plus d’info le SITE OFFICIEL et la DOC UBUNTU)

Ici c’est l’outils convert que l’on va utiliser … mais un example dans ce cas vaux mieux que bcp d’explication :

  • Image : angus_solo.jpeg
  • Taille de l’image : 2816×2120
  • Nouvelle image : 800x600_angus_solo.jpeg
  • Taille de la nouvelle Image : 800×600

Commande à lancer :
 convert -geometry 800x600 angus_solo.jpeg 800x600_angus_solo.jpeg

Je pense que c’est claire pour tout le monde … 😉

Maintenant imaginez que vous avez 250 photos … vous allez pas vous amuser à taper 250 fois la commande …

Donc on va utiliser la fonction for (rassurez vous c’est pas la mort)

  1. Placez vous dans le répertoire des photos
  2. Créez un répertoire CONVERT : mkdir CONVERT
  3. Et la …

for var in `ls -1 | grep -iE ".jpeg|.jpg`;do convert -geometry 800x600 ${var} CONVERT/800x600_${var};done

Traduction* : tant que dans le répertoire ou je suis placé il y a bien des fichier (ls -1) qui termine bien par jpg ou jpeg (grep -iE « .jpeg|.jpg) tu fera pour chacun une conversion par 800×600 de l’image (convert -geometry 800×600 ${var}) et tu la placera dans CONVERT où tu lui donnera le nom de 800x600_ »l_image_en_cours » (CONVERT/800x600_${var})

* Traduction : si on peut appeler ça comme ça .. 😉

Ça devrai déjà aider pas mal de gens …

Maintenant pour les flemmards (comme moi) … je vous ai préparé un petit script qui fait tout tous seul.

  1. Téléchargez le : SuperSizeMe.sh
  2. rendez le Executbale : chmod 775 SuperSizeMe.sh
  3. Lancez le pour voire l’aide : ./SuperSizeMe.sh

ce qui vous donne:

berzerking@nabu4lezard:~$ ./SuperSizeMe.sh
##########################################################
supresizeme.sh 0.1 2009-2010 by ARG
Usage: ./supersizeme.sh -d [path_to_dir] -x [HIGHTxWEIGHT] -D [path_destination]

Je pense que les examples sont assez spécifique

ex1: ./supersizeme.sh -d ~/Images/Concert/ACDC/ -x 1024×768
## Cree automatiquement un repertoire ACDC_1024x768  dans ~/Images/Concert/ACDC/
ex2 : ./supersizeme.sh -d ~/Images/Concert/ACDC/ -x 1024×768 -D /data/
## Cree automatiquement un repertoire ACDC_1024x768  dans /data/
##########################################################

Voila … 😉