gimp editar mistura no script python produz mistura diferente do que a mistura de ferramenta

StackOverflow https://stackoverflow.com//questions/23058643

  •  26-12-2019
  •  | 
  •  

Pergunta

Eu estou tentando escrever um script que redimensiona, move-se e combina duas imagens usando o gimp 2.8 no ubuntu 13.10.

I upload de 2 imagens necessárias e os resultados aqui:http://imgur.com/a/bjgIA

Eu consegui chegar a todos a correr, mas de um ponto de falha.a mistura de comando.Eu reduziu o problema para o pdb.gimp_edit_blend comando que, em vez de mistura da máscara de camada com o fundo transparente cria um opaco gradiente.

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)

todo o código está aqui: http://pastie.org/9079343

alguma idéia do que eu estou fazendo de errado?muito obrigado

Foi útil?

Solução

Seu erro é muito bonito em seu próprio código - você está chamando a mistura função passando o fg_layer como o primeiro parâmetro, em vez da máscara:

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)
                    ^^^^^^^^

Em vez disso, fazer a mesma chamada de passar a máscara, como o drawable parâmetro (você já tem ele na "máscara" variável):

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top