Gimp Modifier Mélange dans le script Python produit un mélange différent de celui de l'outil de mélange
Question
J'essaie d'écrire un script qui repousse, bouge et mélange deux images en une utilisation de Gimp 2.8 sur Ubuntu 13.10.
J'ai téléchargé les 2 images nécessaires et les résultats ici: http://imgur.com/a/bjgia
J'ai réussi à faire fonctionner tous mais un point échoue.la commande de mélange.J'ai réduit le problème à la commande pdb.gimp_edit_blend qui au lieu de mélanger le masque de couche avec le fond transparent, il crée un gradient opaque.
image = gimp.image_list()[0] #image is 237x300 png like above
pdb.gimp_image_resize(image, 300, 300, -100, 0)
fg_layer = pdb.gimp_image_get_active_layer(image)
mask = pdb.gimp_layer_create_mask(fg_layer,ADD_WHITE_MASK)
pdb.gimp_image_add_layer_mask(image, fg_layer, mask)
# from here it goes wrong, if I skip this step than I can get the correct result
# using the gimp blent tool from the gui using the same settings as here
pdb.gimp_edit_blend(fg_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, 0, 0, True, False, 0, 0, True, 0, 150, 150, 150)
Tout le code est ici: http://pastie.org/9079343
Une idée de ce que je fais mal? merci beaucoup
La solution
Votre erreur est à peu près dans votre propre code - vous appelez la fonction de mélange passant le FG_Layer comme premier paramètre, au lieu du masque:
pdb.gimp_edit_blend(fg_layer, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, 0, 0, True, False, 0, 0, True, 0, 150, 150, 150)
^^^^^^^^
Au lieu de cela, faites le même appel qui passe le masque que le paramètre dessinable (vous l'avez déjà dans la variable "MASQUE"):
pdb.gimp_edit_blend(mask, FG_BG_RGB_MODE, NORMAL_MODE, GRADIENT_LINEAR, 100, 0, 0, True, False, 0, 0, True, 0, 150, 150, 150)