Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/07/2011, à 17:23

Hibou57

[Résolu] GIMP Python-Fu : comment l'image est-elle renvoyée ?

-- EDIT --
Réponse dans le message #3.
-- FIN EDIT --

Hello,

Je n’ai jamais écrit de Plugin GIMP jusque maintenant, et je vais en avoir besoin.

Je me renseigne sur la manière de faire avec Python, qui est mon choix plutôt que Schème (je n’ai rien contre les langages fonctionnels, c’est pour d’autres raisons).

La page GIMP Python Documentation commence par l’exemple que je cite :

#!/usr/bin/env python


import math
from gimpfu import *

def python_clothify(timg, tdrawable, bx=9, by=9,
                    azimuth=135, elevation=45, depth=3):
    width = tdrawable.width
    height = tdrawable.height

    img = gimp.Image(width, height, RGB)
    img.disable_undo()

    layer_one = gimp.Layer(img, "X Dots", width, height, RGB_IMAGE,
                           100, NORMAL_MODE)
    img.add_layer(layer_one, 0)
    pdb.gimp_edit_fill(layer_one, BACKGROUND_FILL)

    pdb.plug_in_noisify(img, layer_one, 0, 0.7, 0.7, 0.7, 0.7)

    layer_two = layer_one.copy()
    layer_two.mode = MULTIPLY_MODE
    layer_two.name = "Y Dots"
    img.add_layer(layer_two, 0)

    pdb.plug_in_gauss_rle(img, layer_one, bx, 1, 0)
    pdb.plug_in_gauss_rle(img, layer_two, by, 0, 1)

    img.flatten()

    bump_layer = img.active_layer

    pdb.plug_in_c_astretch(img, bump_layer)
    pdb.plug_in_noisify(img, bump_layer, 0, 0.2, 0.2, 0.2, 0.2)
    pdb.plug_in_bump_map(img, tdrawable, bump_layer, azimuth,
                         elevation, depth, 0, 0, 0, 0, True, False, 0)

    gimp.delete(img)

register(
        "python_fu_clothify",
        "Make the specified layer look like it is printed on cloth",
        "Make the specified layer look like it is printed on cloth",
        "James Henstridge",
        "James Henstridge",
        "1997-1999",
        "<Image>/Filters/Artistic/_Clothify...",
        "RGB*, GRAY*",
        [
                (PF_INT, "x_blur", "X blur", 9),
                (PF_INT, "y_blur", "Y blur", 9),
                (PF_INT, "azimuth", "Azimuth", 135),
                (PF_INT, "elevation", "Elevation", 45),
                (PF_INT, "depth", "Depth", 3)
        ],
        [],
        python_clothify)

main()

Ce qui me chiffonne, c’est que la fonction fournie par ce plugin d’exemple se termine par “gimp.delete(img)”. Mais que deviennent alors les modifications apportées à ce “img” ? L’image est-elle retransmise par effet de bord que je n’ai pas remarqué ?

Et puis pourquoi le paramètre timg n’est-il pas référencé ? Cette fonction est tout de même censée modifier une image existante, ou non ?

Dernière modification par Hibou57 (Le 14/07/2011, à 08:17)


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne

#2 Le 14/07/2011, à 08:00

Hibou57

Re : [Résolu] GIMP Python-Fu : comment l'image est-elle renvoyée ?

Ici : Writing Plugins for GIMP in Python - page 3
C’est cet exemple qui est donné :

def python_pytest(img, layer) :
    pdb.gimp_image_flip(img, ORIENTATION_VERTICAL)

Et là, ils utilisent le paramètre passé au plug-in. Ça rend l’exemple du premier message encore plus mystérieux. Pourtant je viens de l’essayer, celui du premier message, et il fonctionne.

Des gens ici ont déjà écrit des plug-ins Python pour GIMP ?


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne

#3 Le 14/07/2011, à 08:21

Hibou57

Re : [Résolu] GIMP Python-Fu : comment l'image est-elle renvoyée ?

Ça y est, j'ai compris. C’est dans l’avant dernière instruction

pdb.plug_in_bump_map(img, tdrawable, bump_layer, azimuth,
                         elevation, depth, 0, 0, 0, 0, True, False, 0)

L’image est modifiée par l’intermédiaire de tdrawable dans cette instruction. C’est contre-intuitif, parce que la syntaxe de l’instruction laisse penser que l’objet modifié est img, mais c’est la réponse à la question quand-même.

-- EDIT -- C’est vraiment le floue complet tout ça quand-même. Le navigateur de procédures de GIMP indique que ce drawable est utilisé en entrée… pourtant il fonctionne en sortie !

Dernière modification par Hibou57 (Le 14/07/2011, à 08:28)


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne