Conversion d’images par batch

Pourquoi utiliser ImageMagick

ImageMagick est une bibliothéque qui permet d’effectuer du traitement d’image. Sous licence Apache 2.0, elle est disponible sur plusieurs langages (C/C++, PHP, …) via des interfaces adaptées.
Elle est aussi facilement manipulable via un script Bash, ce qui permet de faire du traitement par lot d’images.

Celle-ci est disponible au téléchargement sur le site officiel : http://www.imagemagick.org/script/index.php

Exemple d’utilisation : réduction d’image, rendu similaire à GIMP et Photoshop

Le but est d’obtenir un résultat similaire à GIMP ou Photoshop via ImageMagick dans la conversion d’images pour le web ou le mobile.

Pour obtenir ce résultat nous allons procéder à une suite de traitements :
– Réduction via un filtre Lanczos
– Profondeur 24 bits
– Niveau de compression à 95%
– Filtre permettant d’adoucir l’image
– Conversion au format PNG

Exemple de code :

#! /bin/bash
# script directory
scriptDirectory=$(dirname $0)
# get file list
originalFileList=`ls -1 $scriptDirectory/original/`
for originalFile in $originalFileList ; do
    extension="${originalFile##*.}"
    if test $extension == png || test $extension == gif || test $extension == jpeg || test $extension == jpg  ; then
        echo "Processing file : $originalFile"
        resizeImage 128 $originalFile
    fi
done
# resize image
function resizeImage(){
    # test if directory original exists
    if [ -d $scriptDirectory/$1/ ] ; then
        echo "Format $1 directory exists : $scriptDirectory/$1"
    else
        echo "Creating format $1 director : $scriptDirectory/$1"
        mkdir $scriptDirectory/$1
    fi
    # convert the file
    convert $scriptDirectory/original/$2 -distort Resize $1x$1 -filter Lanczos -depth 24 -quality 95 -unsharp 0.5x0.5+0.5+0.008 $scriptDirectory/$1/${2%%.*}_$1.png
}