Gimp Python Script : comment automatiser son travail ?

Gimp Python Script

Les script Python avec Gimp peuvent se révéler très utiles pour automatiser des tâches répétitives ou faire des traitements de masse. Toutefois cette fonctionnalité manque de documentation claire et à jour. Il y a quelques subtilités à connaitre qui vous permettront de limiter le temps consacré à cette tâche.

GIMP est un outil d’édition d’images Open Source et gratuit, il est puissant et dispose de nombreuses fonctionnalités. Comme de nombreux projets Open Source, la communauté est très active sur le sujet. Cependant le sujet des scripts Python manque de ressources fiables, pourtant c’est une fonctionnalité de Gimp très utile.

Vous trouverez de nombreux exemples sur la toile, mais les exemples de code ne sont pas toujours fonctionnels. L’objectif de ce guide est de vous donner les bonnes bases pour automatiser votre travail sous Gimp avec des scripts Python. Bien que ce guide suppose une connaissance de base en Python, aucune expérience préalable dans le scripting de GIMP n’est nécessaire.

A lire : Comment installer Python sur windows 11 en tout sécurité ?

Comment créer un script Python pour Gimp ?

Tout d’abord, les scripts Python sont considérés comme des plugins par Gimp, le repertoire dans lesquels il faut les déposer est donc « plug-ins » et non « scripts ». Il est possible de définir un dossier spécifique dans les préférences (Edition\Préférences).

Pour installer ces scripts, vous devez le copier un script Python, test.py par exemple, dans le dossier des plug-ins de GIMP (habituellement GIMP 2/lib/gimp/2.10/plug-ins). Une fois installés, les scripts peuvent être trouvés dans Filtres\Test.

Pour commencer voici un modèle basique afin de s’assurer tout fonctionne bien :

#!/usr/bin/env python

from gimpfu import *

def hello_world(img, layer) :
    
    gimp.message("Hello world")

register(
    "python_fu_test_hello_world",
    "Hello world",
    "Display a 'hello world' message",
    "Cosmo-games.com",
    "Open source (BSD 3-clause license)",
    "2024",
    "<Image>/Filters/Test/Hello world",
    "*",
    [],
    [],
    hello_world)

main()

Une fois le fichier déposé dans le répertoire, relancez Gimp et le script Python doit être visible dans Filtres\Test.

Comment implémenter un script Python avec Gimp ?

Une fois la première étape réaliser, vous pouvez maintenant développer votre propre script. La principale difficulté ici est de trouver les bonnes informations pour manipuler les objets Gimp.

  • La documentation officielle : cette partie de la documentation n’a pas été mise à jour depuis un moment, vous y trouverez néanmoins des informations utiles
  • Généré du code avec ChatGPT : J’ai testé la génération de script Python pour Gimp avec ChatGPT. Si le résultat n’est pas fonctionnel, il a le mérite d’apporter une bonne base de travail. ChatGPT ne semble pas avoir toutes les informations pour créer du code fonctionnel.
  • Utiliser des exemples : c’est une excellente base de travail et vous trouverez de nombreux exemples, je vous conseille le dépôt GitHub jfmdev/PythonFuSamples. Les exemples datent, mais ils sont pour la plupart fonctionnel.

Comment debugger les scripts Python avec Gimp ?

Le débogage est la principale difficulté, c’est pourtant une étape essentielle.

Tout d’abord, vous devez redémarrer GIMP lorsque vous ajoutez un script ou modifiez register(). Aucun redémarrage n’est nécessaire lorsque vous modifiez d’autres parties du script, il s’exécute en tant que processus séparé et sera relu depuis le disque à chaque fois.

Les erreurs de script sont inévitables, il est donc nécessaire d’avoir des informations de débogage, il y a plusieurs possibilités :

La console Python-fu

Console Python de Gimp

Vous pouvez attacher le débogage à votre plug-in dans la console python-fu comme suit :

pdb.name_of_registerd_plug-in

Une fois attaché, executer votre script dans la console Python de Gimp :

pdb.name_of_registerd_plug-in(img, arg1, arg2, ...)

Également dans la console de dialogue python-fu, vous pouvez cliquer sur l’option Parcourir … et trouver votre plug-in enregistré, puis cliquer sur Appliquer pour l’importer dans la console python-fu.

Afficher des informations de débogage avec les messages Gimp

Pour afficher des informations, vous pouvez définir une fonction comme ceci :

def gimp_log(text):
    pdb.gimp_message(text)

Et l’utiliser dans votre code, chaque fois que vous le souhaitez.

Pour voir le journal de cela, dans le programme GIMP, ouvrez la Console d’erreur depuis les Dialogues encastrables dans le menu Windows, sinon une boîte de message apparaîtra à chaque fois que vous enregistrez une action.

Vous pouvez également rediriger stdin et stdout vers un fichier :

import sys
sys.stderr = open('er.txt', 'a')
sys.stdout = open('log.txt', 'a')

Lorsque vous faites cela, toutes les exceptions iront dans err.txt et toutes les sorties de console iront dans log.txt. Notez que vous ouvrez le fichier avec l’option ‘a’ au lieu de ‘w’ pour conserver le fichier journal.

Les scripts Python Gimp sont-ils la manière la plus efficaces de manipuler les images ?

J’ai créé plusieurs scripts Python afin d’automatiser mon travail avec Gimp. Cependant la difficulté de débogage rend cette tâche fastidieuse et peu efficace. Plus les tâches sont compliquées, plus le temps à déboguer devient important.

Je me suis donc tourné vers des librairies Python de manipulation d’image, cela me permet d’avoir des informations de débogage complètes et également un code portable sur n’importe quelle machine.

Il existe plusieurs excellentes bibliothèques Python pour manipuler des images. Si vous rencontrez des difficultés avec les scripts Python de Gimp ou pour tout autres raisons, voici quelques alternatives populaires avec des librairies Python :

  1. Pillow (PIL) : Pillow est une bibliothèque de traitement d’images Python qui étend les capacités de la bibliothèque d’origine PIL (Python Imaging Library). Pillow prend en charge un large éventail de formats d’images et offre des fonctionnalités telles que le redimensionnement, la rotation, le recadrage, la conversion de formats, le traitement de filtres, etc.
  2. OpenCV (Open Source Computer Vision Library) : OpenCV est une bibliothèque open-source de vision par ordinateur et de traitement d’images. Bien qu’elle soit principalement utilisée pour des tâches de vision par ordinateur telles que la détection d’objets, la reconnaissance faciale, etc., elle offre également de puissantes fonctionnalités de traitement d’images, y compris la manipulation d’images et la conversion de formats.
  3. scikit-image : scikit-image est une bibliothèque Python dédiée au traitement d’images basé sur SciPy. Elle offre une large gamme de fonctionnalités pour la manipulation d’images, y compris le filtrage, la segmentation, la transformation, etc.
  4. imageio : imageio est une bibliothèque Python qui fournit une interface simple pour lire et écrire une grande variété de formats d’images. Elle est souvent utilisée pour des tâches de traitement d’images simples et rapides.
  5. Pygame : Pygame est une bibliothèque de développement de jeux en Python, mais elle inclut également des fonctionnalités pour la manipulation d’images, telles que le chargement, la modification et l’affichage d’images.

Ces bibliothèques offrent différentes fonctionnalités et sont adaptées à différents cas d’utilisation. Le choix de la meilleure bibliothèque dépend des besoins spécifiques de votre projet.

A lire aussi

Si vous appréciez nos articles, ne manquez les prochains en vous abonnant à Cosmo Games sur Google News, vous pouvez également nous suivre sur X (ex Twitter). N'hésitez pas à partager vos réactions, commentaires ou remarques dans les commentaires, afin d'enrichir le contenu, de mieux vous comprendre et intégrer les différents points de vue. Un partage sur les réseaux sociaux nous aide également beaucoup, merci pour votre soutien !

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *