GIMP : rotations et exports par script python

indigopter - 19 sept. 2023 à 16:24

Bonjour,

Je cherche à exporter une image 360 fois sur 360 angles différents. J'ai donc cherché à développer un script Python pour qu'il fasse une rotation de 1° avant chaque export.

Sauf que j'ai le message suivant :

Message GIMP Le greffon s’est arrêté brutalement : « python-console.py » (C:\Program Files\GIMP 2\lib\gimp\2.0\plug-ins\python-console\python-console.py) Le greffon a peut-être endommagé l’état interne de GIMP. Vous devriez enregistrer vos images et redémarrer GIMP pour être certain de sa stabilité.

j'entre dans GIMP :

import export_rotated_images
export_rotated_images.export_rotated_images(gimp.image_list()[0], None, "Aiguille1")

Et le fichier export_rotated_images.py contient ça :

#!/usr/bin/env python

import os
from gimpfu import *

def export_rotated_images(image, drawable, output_folder):
    for angle in range(360):
        # Dupliquer le calque actif
        pdb.gimp_item_set_visible(image.active_layer, True)
        new_layer = pdb.gimp_layer_copy(image.active_layer, True)
        pdb.gimp_image_insert_layer(image, new_layer, None, 1)

        # Appliquer la rotation
        pdb.gimp_item_set_visible(image.active_layer, True)
        pdb.gimp_layer_rotate(image.active_layer, angle, 0, 0)

        # Exporter l'image
        export_path = os.path.join(output_folder, "Rotation_{:03d}.png".format(angle))
        pdb.file_png_save(image, image.active_layer, export_path, export_path, 0, 9, 1, 1, 1, 1, 1)

        # Supprimer le calque temporaire
        pdb.gimp_image_remove_layer(image, image.active_layer)

register(
    "python-fu-export-rotated-images",
    "Export 360 rotated images",
    "Export 360 rotated images",
    "Your Name",
    "Your Name",
    "2023",
    "<Image>/File/Export 360 Rotated Images",
    "*",
    [
        (PF_DIRNAME, "output_folder", "Output Folder", "Aiguille1"),
    ],
    [],
    export_rotated_images,
)

main()

Est-ce que quelqu'un saurait dénicher le soucis ou me proposer une autre solution ?

Merci d'avance


Windows / Chrome 117.0.0.0