Gimp python-fu 脚本到 select 所有具有给定颜色的东西并将其更改为不同的颜色
Gimp python-fu script to select everything with a given color and change it to a different color
我正在编写一个插件脚本,它将打开一个文件,select 按颜色,将 selection 更改为新颜色,将图像另存为新文件。
我不知道如何将颜色更改为新颜色。有人可以提供指导吗?
这是我目前拥有的:
# open input file
theImage = pdb.gimp_file_load(in_filename, in_filename)
# get the active layer
drawable = pdb.gimp_image_active_drawable(theImage)
# select everything in the image with the color that is to be replaced
pdb.gimp_image_select_color(theImage, CHANNEL_OP_REPLACE, drawable, colorToReplace)
# need to do something to change the color from colorToReplace to the newColor
# but I have no idea how to change the color.
# merge the layers to maintain transparency
layer = pdb.gimp_image_merge_visible_layers(theImage, CLIP_TO_IMAGE)
# save the file to a new filename
pdb.gimp_file_save(theImage, layer, out_filename, out_filename)
您只需要填满选择:
pdb.gimp_drawable_edit_fill(drawable, fill_type)
这会用当前 foreground/background 颜色填充选区(取决于 fill_type)。如果您需要在您的插件中设置此颜色:
import gimpcolor
color=gimpcolor.RGB(0,255,0) # integers in 0->255 range)
color=gimpcolor.RGB(0.,1.,0.) # Floats in 0.->1. range)
pdb.gimp_context_set_foreground(color)
请注意,这回答了您的技术问题,但这可能不是您想要做的(像素化边缘、剩余光晕等...)。好的技术通常是用透明度替换初始颜色(在 Color Erase
模式下绘制),然后在 Behind
模式下用新颜色填充孔。例如,将 FG 颜色替换为 BG 颜色:
pdb.gimp_edit_bucket_fill(layer,FG_BUCKET_FILL,COLOR_ERASE_MODE,100.,0.,0,0.,0.)
pdb.gimp_edit_bucket_fill(layer,BG_BUCKET_FILL,BEHIND_MODE, 100.,0.,0,0.,0.)
如果您不想更改图像中的其他混合颜色,请保留您的颜色选择,在应用两个绘画操作之前将其增加一个像素。扩大选区使上述操作适用于边缘上的像素,这是非常重要的地方。
我正在编写一个插件脚本,它将打开一个文件,select 按颜色,将 selection 更改为新颜色,将图像另存为新文件。
我不知道如何将颜色更改为新颜色。有人可以提供指导吗?
这是我目前拥有的:
# open input file
theImage = pdb.gimp_file_load(in_filename, in_filename)
# get the active layer
drawable = pdb.gimp_image_active_drawable(theImage)
# select everything in the image with the color that is to be replaced
pdb.gimp_image_select_color(theImage, CHANNEL_OP_REPLACE, drawable, colorToReplace)
# need to do something to change the color from colorToReplace to the newColor
# but I have no idea how to change the color.
# merge the layers to maintain transparency
layer = pdb.gimp_image_merge_visible_layers(theImage, CLIP_TO_IMAGE)
# save the file to a new filename
pdb.gimp_file_save(theImage, layer, out_filename, out_filename)
您只需要填满选择:
pdb.gimp_drawable_edit_fill(drawable, fill_type)
这会用当前 foreground/background 颜色填充选区(取决于 fill_type)。如果您需要在您的插件中设置此颜色:
import gimpcolor
color=gimpcolor.RGB(0,255,0) # integers in 0->255 range)
color=gimpcolor.RGB(0.,1.,0.) # Floats in 0.->1. range)
pdb.gimp_context_set_foreground(color)
请注意,这回答了您的技术问题,但这可能不是您想要做的(像素化边缘、剩余光晕等...)。好的技术通常是用透明度替换初始颜色(在 Color Erase
模式下绘制),然后在 Behind
模式下用新颜色填充孔。例如,将 FG 颜色替换为 BG 颜色:
pdb.gimp_edit_bucket_fill(layer,FG_BUCKET_FILL,COLOR_ERASE_MODE,100.,0.,0,0.,0.)
pdb.gimp_edit_bucket_fill(layer,BG_BUCKET_FILL,BEHIND_MODE, 100.,0.,0,0.,0.)
如果您不想更改图像中的其他混合颜色,请保留您的颜色选择,在应用两个绘画操作之前将其增加一个像素。扩大选区使上述操作适用于边缘上的像素,这是非常重要的地方。