Tonung von Bildern in Gimp mit Python
Mehrere Bilder (ein ganzes Verzeichnis) sollen mit einer Tonung (z.B. Sepia) versehen werden. Auch dieses Beispiel kann wieder direkt in der Python-Konsole von Gimp genutzt werden.
Die Grundlagen (also der Modulimport) ist identisch mit denen der Bildskalierung in Gimp. Die zu verarbeitenden Bilder liegen im temp-Verzeichnis des Users.
import os import glob os.chdir(os.path.join(os.path.expanduser('~/'), 'temp')) files = glob.glob('*.jpg')
Die Liste der Dateien wird folgenden Aktionen unterzogen:
- Bild laden
- eine Kopie des Bildes anlegen (ist hier eigentlich überflüssig)
- die Vordergrundfarbe wird auf den gewünschten Wert gesetzt
- es wird ein neuer Layer eingefügt (dafür sind zwei Funtkionsaufrufe nötig!)
- der neue Layer wird gefüllt
- das Bild wird zum Speichern auf eine Ebene reduziert
- nach dem Speichern werden die Daten aus dem Speicher entfernt
for f in files: image = pdb.file_jpeg_load(os.path.join(srcpath, f), '') workimg = pdb.gimp_image_duplicate(image) pdb.gimp_context_set_foreground((0xa2, 0x8a, 0x65)) color_layer = pdb.gimp_layer_new(workimg, nw, nh, RGB_IMAGE, 'color', 100.0, COLOR_MODE) pdb.gimp_image_add_layer(workimg, color_layer, -1) new_drawable = pdb.gimp_image_get_active_drawable(workimg) pdb.gimp_bucket_fill(new_drawable, FG_BUCKET_FILL, NORMAL_MODE, 100.0, 255.0, True, 0, 0) pdb.gimp_image_flatten(workimg) drawable = pdb.gimp_image_get_active_drawable(workimg) targetf = "sepia_" + f pdb.file_jpeg_save(workimg, drawable, targetf, targetf, 0.91, 0, 1, 0,\ "created with gimp-python", 0, 1, 0, 1) pdb.gimp_image_delete(workimg) pdb.gimp_image_delete(image)
Alternative Methoden
Es gibt auch die Funktion pdb.plug_in_sample_colorize() Allerdings ist es mit damit nicht gelungen Bilder über Python-Fu mit einer Tonung zu versehen. Vielleicht hat da jemand einen Tipp?