我正在尝试编写重新尺寸的脚本,在Ubuntu 13.10上使用gimp 2.8在一个上移动和混合两个图像。

我上传了2个需要的图像和结果: http://imgur.com/a/bjgia

我设法全部运行,但一点失败。混合命令。我将问题缩短了pdb.gimp_edit_blend命令,而不是将图层掩码与透明背景混合它创建不透明梯度。

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

整个代码在这里: http://pastie.org/9079343

任何想法我做错了什么? 谢谢很多

有帮助吗?

解决方案

您的错误几乎在您自己的代码中 - 您正在调用混合函数传递 FG_Layer作为第一个参数,而不是掩码:

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

相反,执行将掩码的相同调用作为可绘制参数(您已在“掩码”变量中):

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top