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 15/07/2011, à 13:15

Hibou57

[+/- Résolu] Python GIMP : comment selectionner un drawable ?

Re-coucou,

Une question concernant les plugins GIMP en Python à nouveau. Lorsque l’on a créé un ou plusieurs Layer, et qu’on les a ajouté à une image, comme fait-on pour les rendre actif sélectivement ? Tout nouveau Layer ajouté est actif par défaut, quelque soit le Layer précédemment actif; mais ça n’est pas ce que je recherche, car on peut vouloir changer le Layer actif également, pour un en particulier. Est-ce au moins possible ?

Je ne trouve rien à ce sujet dans GIMP Library Reference.

Dernière modification par Hibou57 (Le 16/07/2011, à 22:27)


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 16/07/2011, à 22:26

Hibou57

Re : [+/- Résolu] Python GIMP : comment selectionner un drawable ?

Je vais marqué résolu, même si je n’ai pas trouvé comment le faire, parce que je crois que la réponse, c’est que ce n’est pas possible (ou presque, voir ci-aprés), au moins pour ce qu'il en est à la version 2.6 de GIMP.

Hypothèse que je fais : l'API des plugins mimique beaucoup l’interface utilisateur (c’est un mauvais design, mais c’est comme ça). Depuis l’interface utilisateur, lorsque l’on clique sur un masque ou un calque par exemple (qui sont des drawable), c’est pour dessiner et y effectuer des opérations. Les plugins, eux, pour dessiner sur un drawable et les modifier, utilisent des références à des objets. Donc j’imagine que comme la sélection d’un drawable n’a pas été vu comme nécessaire pour modifier une image depuis les plugins, que ça n’a pas été prévu.

Ce que je souhaitais, c’était que l’exécution d’un plugin se termine le plus proprement possible, en rendant actif un calque en particulier.

En fait, le seul moyen de sélectionner un drawable, c’est de l’ajouter. Alors il faudrait d’abord le retirer puis le re-ajouter. Pour cela, une vue sur l’image doit être active. Mais comme je trouve que ce n’est pas propre du tout d’ajouter ce genre de bricolage dans un source, eh bien je m’en passerai.

Si quelqu’un a une solution, le topic reste ouvert quand-même, même si je le marque comme Résolu.

Dernière modification par Hibou57 (Le 16/07/2011, à 22:26)


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 18/07/2011, à 10:33

MimileVadrouille

Re : [+/- Résolu] Python GIMP : comment selectionner un drawable ?

Salut

est cela que tu cherches ?

vers la fin je sélectionne le l avant dernier calque pour le merger avec celui du dessous, et rebelote pour celui qui est tout au dessus.
(set! overlay-layer (car (gimp-image-merge-down inImage overlay-layer 0)))
(set! GreenishYellow-layer (car (gimp-image-merge-down inImage GreenishYellow-layer  0)))

PS: cest ma petite adaptation du  du script Cross Process de Ben Mesander

(define (script-fu-cross inImage inLayer contrast tint color MergeDown)

  ; start an undoable group of operations

  (gimp-image-undo-group-start inImage)

  ; remap curves for red/green/blue components

  (gimp-curves-spline inLayer HISTOGRAM-RED 10 #(0 0  88 47  170 188  221 249  255 255))
;    pdb.gimp_curves_spline(drw, RED, 10,  (0, 0, 
;                                           rint(j, 88), rint(j, 47), 
;                                           rint(j,170), rint(j,188), 
;                                           rint(j,221), rint(j,249), 
;                                           255, 255))
  (gimp-curves-spline inLayer HISTOGRAM-GREEN 8 #(0 0  65 57  184 208  255 255))
  (gimp-curves-spline inLayer HISTOGRAM-BLUE 4 #(0 29  255 226))

  ; duplicate image layer, mark it as contrast% opacity, and overlay it


  (let* (
     (overlay-layer (car (gimp-layer-copy inLayer FALSE)))
     (GreenishYellow-layer (car (gimp-layer-new inImage (car (gimp-image-width inImage))
                    (car (gimp-image-height inImage)) RGB-IMAGE 
                    "GreenishYellow" 10 OVERLAY-MODE)))
        )

    (gimp-image-add-layer inImage overlay-layer -1)
    (gimp-layer-set-opacity overlay-layer contrast)
    (gimp-layer-set-mode overlay-layer OVERLAY-MODE)


  ; create a new greenish-yellow layer at 10% opacity and overlay it
    (gimp-context-set-foreground '(0 255 186))
    (gimp-drawable-fill GreenishYellow-layer FOREGROUND-FILL)
    (gimp-image-add-layer inImage GreenishYellow-layer -1)


    ;Merge down
    (if(= MergeDown TRUE)
       (begin

    ;Merge the  Yellow layer down
    (gimp-image-set-active-layer inImage overlay-layer)
    (set! overlay-layer (car (gimp-image-merge-down inImage overlay-layer 0)))

    ;Merge the  magenta layer down
    (gimp-image-set-active-layer inImage GreenishYellow-layer)
    (set! GreenishYellow-layer (car (gimp-image-merge-down inImage GreenishYellow-layer  0)))

    ;Merge the  cyan layer down
;    (gimp-image-set-active-layer img cyan-layer)
;    (set! cyan-layer (car (gimp-image-merge-down img cyan-layer 0)))

         )
       )
  )
  ; display cross processed image, and end the undoable group of operations
  (gimp-displays-flush)
  (gimp-image-undo-group-end inImage))

Hors ligne