【发布时间】:2011-12-13 21:27:10
【问题描述】:
在 Gimp GUI 中,QuickMask 对很多事情都非常有用,但是这个功能似乎不能通过 script-fu 直接使用。在过程浏览器中对我来说没有明显的等价物。
特别是,将图层的(值/灰色)像素放入选择蒙版是我需要做的基本事情。我尝试使用 gimp-image-get-selection 获取选择通道的 id 号,然后 gimp-edit-paste 进入其中,但以下锚操作导致 Gimp 崩溃。
【问题讨论】:
在 Gimp GUI 中,QuickMask 对很多事情都非常有用,但是这个功能似乎不能通过 script-fu 直接使用。在过程浏览器中对我来说没有明显的等价物。
特别是,将图层的(值/灰色)像素放入选择蒙版是我需要做的基本事情。我尝试使用 gimp-image-get-selection 获取选择通道的 id 号,然后 gimp-edit-paste 进入其中,但以下锚操作导致 Gimp 崩溃。
【问题讨论】:
我的另一个答案包含“理论”的做法 - 但是,OP 在 GIMP 中发现了一个错误,从 2.6.5 版开始,该答案在 cmets 上可以看到。
我得到了 O.P. 打算做的解决方法:将给定图像层的内容粘贴到图像选择中。如前所述,选择可绘制对象上的编辑复制 -> 编辑粘贴会触发程序崩溃。
解决方法是通过复制和粘贴方法创建一个具有所需内容的新图像通道,然后使用 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'
【讨论】: