Traitement des images

J'utilise, pour traîter mes photos, le logiciel RawTherapee libre et gratuit. Il est capable de lire et de transformer les données «brutes» (Raw en anglais) issues des capteurs des appareils photo.

Pour aller plus loin dans le traitement, j'utilise le logiciel Gimp qui est aussi libre et gratuit. Je travaille sous Windows mais je pense que sous Mac ou Linux on peut faire la même chose.

Gimp n'ouvre pas les fichiers de type Raw issus de mon appareil photo. Mais si je déclare que ces fichiers peuvent être ouverts par défaut grâce à RawTherappe alors Gim ouvre les fichiers Raw grâce à un greffon de RawTherapee, donne la possibilité à l'utilisateur de modifier le rendu de l'image puis ouvre Gim avec l'image obtenue. C'est un peu lent et l'ordinateur ne dit rien pendant les chargement mais l'ntérêt de la méthode est que chaque pixel est représenté par un nombre en virgule flottante sur 32 bits. Ce mode est utilisé par tous les ordinateurs et fait l'objet d'une norme (cf https://fr.wikipedia.org/wiki/IEEE_754).

Gimp permet la création de fonctions supplémentaires (plugs-in). Vous trouverez ci-dessous quelques exemples écrits en Python :

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from gimpfu import *

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

register(
    "python_fu_test",
    "test",
    "Affiche le message 'Hello world'",
    "JPQ",
    "Licence GPL",
    "2024",
    "<Image>/Filters/Test/Test",
    "*",
    [],
    [],
    test)

main()

Ce programme qu'on peut placer dans le répertoire «C:\Users\\AppData\Roaming\GIMP\2.10\plug-ins» sous le nom «test.py» si on est sous Windows. Après le lancement de Gimp, il apparaîtra dans le sous-menu «Filtres->Test» sous le nom «Test». Il est exécutable dès qu'il y a une image et se contente d'afficher "Hello world" dans le bandeau de la fenêtre principale.


#!/usr/bin/env python
#-*- coding:utf-8 -*-

from gimpfu import *

def gcd (a, b):
	while (a % b):
		a, b = b, a % b
	return b

def python_pgcd (img, calque):
	largeur = img.width
	hauteur = img.height
	sl = " / " + str (largeur)
	for x in range (largeur):
		gimp.message ("Calcul en cours : " + str (x) + sl)
		for y in range (hauteur):
			g = gcd (x + 1, y + 1) % 256
			couleur = (g, 0, 0)
			calque.set_pixel (x, y, couleur)
	img.resize (largeur, hauteur, 0, 0)		# nécessaire pour un rafraichissement de l'écran



register(
    "pgcd",
    "pgcd de x et y",
    "pgcd et image",
    "JPQ",
    "Licence GPL",
    "2024",
    "<Image>/Filters/Test/Pgcd",
    "*",
    [],
    [],
    python_pgcd)

main()

Cet exemple inspiré de Manipulation_de_pixels_en_Python_sous_Gimp affiche une image correspondant au Pgcd des coordonnées des Pixels.

Il faut d'abord créer une image de taille 400 par 400 par exemple, puis lancer la commande qu'on trouvera dans «/Filters/Test/Pgcd» si on a bien placé le programme dans le répertoire «C:\Users\\AppData\Roaming\GIMP\2.10\plug-ins».

C'est «python_pgcd» qui crée cette image formée de pixels noirs ou rouges ; «img» est l'image courante et «calque» le calque correspondant.

img.resize (largeur, hauteur, 0, 0) ne fait rien ! Cela permet simplement un rafraichissement automatique de l'image ; on peut peut-être faire différemment.


#!/usr/bin/env python
#-*- coding:utf-8 -*-

from gimpfu import *

def test (img, layer, s):
    gimp.message (s)

register(
    "python_fu_test2",
    "test2",
    "Affiche une chaîne de caractères",
    "JPQ",
    "Licence GPL",
    "2024",
    "<Image>/Filters/Test/Test2",
    "*",
    [(PF_STRING, "string", "chaîne de caractères : ", "")],
    [],
    test)

main()
On ajoute ici un paramètre introduit grâce à une boîte de dialogue (PF_STRING, "string", "chaîne de caractères : ", "").

[ retour page d'accueil ]