• Lefinnois.net

  • Traitement batch avec The Gimp pour la conversion de fichiers

18 mars 2007

Traitement batch avec The Gimp pour la conversion de fichiers

Tags : ,

posté dans Code |

Pour la conversion de format graphique j'utilise habituellement ImageMagick et une petite boucle for de Bash. Malheureusement, il existe des formats de fichiers que les outils ImageMagick ne peuvent pas manipuler. C'est le cas des Motifs (patterns) utilisés par The Gimp. Il faut alors se tourner vers The Gimp lui-même et l'utiliser en mode non interactif, le mode batch.

The Gimp peut s'utiliser depuis la ligne de commande et sans interface (donc sans X et ses tonnes de bibliothèques et autres fichiers). On utilise la commande gimp avec les options -i, -c et -b, respectivement pour désactiver l'interface graphique, afficher les messages sur la console et non dans des boîtes de dialogue et pour prendre en argument une procédure en mode batch.

Pour la conversion des .pat en JPEG, il faut ensuite créer une procédure adaptée qu'on placera dans un fichier dans son ~/.gimp-2.2/scripts :

(define (patconv           infile
                           outfile
                           )

  (let* )
         (drawable (car (gimp-image-get-active-layer img)))
         )
    (gimp-message-set-handler 1)
    (gimp-file-save RUN-NONINTERACTIVE img drawable outfile outfile)
    (gimp-image-delete img)
    ))

La procédure accepte en argument un nom de fichier en entrée et un nom de fichier en sortie. Elle ouvre le fichier d'entrée, récupère le drawable nécessaire pour la procédure d'enregistrement puis, enregistre le fichier de sortie et détruit l'image.

Il suffit ensuite d'utiliser la commande :

 gimp -i -c -b "(patconv \"wax.pat\" \"wax.jpg\")" "(gimp-quit 0)"

Notez qu'il faut échapper les " et utiliser la procédure (gimp-quit 0) dans l'argument et non dans la procédure stockée dans le fichier.

Pour boucler sur les fichiers dans un répertoire, le shell est mis à contribution :

mkdir JPG
for i in `/bin/ls *.pat`
do
gimp -i -c -b "(patconv \"$i\" \"JPG/`basename $i .pat`.jpg\")" "(gimp-quit 0)"
done

Et voilà un répertoire JPG plein de JPEG. Pour récupérer le nom des motifs, la commande file est notre amie.

Article posté on Dimanche, 18 mars 2007 à 14:25 dans Code. Vous pouvez suivre les commentaires sur cet article via un feed RSS 2.0. Vous pouvez laisser un commentaire. Le Ping n'est actuellement pas autorisé.

Il y a actuellement 3 réponses pour “Traitement batch avec The Gimp pour la conversion de fichiers”

  1. 1 Le 27 août 2007, vilraleur à écrit :

    On peut faire la même chose en partant de fichier png et les convertir en svg ???

  2. 2 Le 2 septembre 2007, Lefinnois à écrit :

    Là il ne s’agit plus de simple conversion de format mais de vectorisation. On passe d’un format bitmap (pixel) à un format vectoriel (courbes, lignes, etc). E moins, bien sûr, de vouloir simplement créer un bitmap encapsulé dans un format vectoriel comme SVG, EPS ou PDF. Ceci est facilement faisable avec des outils comme convert du projet ImageMagick.

  3. 3 Le 22 décembre 2007, scls19fr à écrit :

    Pour faire de la vectorisation, on peut également citer des outils comme :
    du côté du libre
    potrace http://potrace.sourceforge.net
    autotrace http://autotrace.sourceforge.net
    delineate http://delineate.sourceforge.net

    et du côté du propriétaire
    Adobe Live Trace (anciennement Adobe Streamline)
    Adobe Illustrator
    Corel Trace

Laisser un commentaire

*
Pour prouver que vous n'êtes pas un bot, recopiez le code ci-dessous
Anti-Spam Image