在 Gimp GUI 中,QuickMask 对很多事情都非常有用,但这个功能似乎不能通过 script-fu 直接获得。在过程浏览器中对我来说没有明显的等价物。
特别是,将图层的(值/灰色)像素放入选择蒙版是我需要做的基本事情。我尝试使用 gimp-image-get-selection 获取选择通道的 id 号,然后 gimp-edit-paste 进入其中,但以下锚操作导致 Gimp 崩溃。
我的另一个答案包含这样做的“理论”方式 - 但是,从 2.6.5 版开始,OP 在 GIMP 中发现了一个错误,正如对该答案的评论所示。
我得到了 OP 打算做的解决方法:将给定图像层的内容粘贴到图像选择中。如前所述,选择可绘制对象上的编辑复制-> 编辑粘贴会触发程序崩溃。
解决方法是通过复制和粘贴方法创建具有所需内容的新图像通道,然后使用 gimp-selection-load 使选择等于通道内容:
因此需要调用的函数是(我不会粘贴方案代码,因为我并不精通所有括号 - 我使用 GIMP 中的 Python 控制台进行了测试):
>>> img = gimp.image_list()[0]
>>> ch = pdb.gimp_channel_new(img, img.width, img.height, "bla", 0, (0,0,0))
>>> ch
<gimp.Channel 'bla'>
>>> pdb.gimp_edit_copy(img.layers[0])
1
>>> pdb.gimp_image_add_channel(img, ch, 0)
>>> fl = pdb.gimp_edit_paste(ch, 0)
> >> fl
<gimp.Layer 'Pasted Layer'>
>>> pdb.gimp_floating_sel_anchor(fl)
>>> pdb.gimp_selection_load(ch)
通过用户界面使用 QuickMask 完全等同于在选区上绘图,将选区视为可绘制对象。
因此,要在 script-fu 上使用等效于“quickmask”的所有内容,只需将 Selection 作为可绘制对象检索,并将其作为参数传递给将修改它的调用 - 要获得选择,只需调用“gimp-image-get-selection”