Gimp python-fu脚本选择具有给定颜色的所有内容并将其更改为其他颜色

我正在编写一个插件脚本,它将打开一个文件,按颜色选择,将选择内容更改为新颜色,然后将图像另存为新文件。

我不知道如何将颜色更改为新颜色。有人可以提供指导吗?

这是我到目前为止所拥有的:

  # 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)
bcp123 回答:Gimp python-fu脚本选择具有给定颜色的所有内容并将其更改为其他颜色

您只需要对选择进行填充:

pdb.gimp_drawable_edit_fill(drawable,fill_type)

这将使用当前的前景色/背景色(取决于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模式下用新颜色填充孔。例如,用BG替换FG颜色:

pdb.gimp_edit_bucket_fill(layer,FG_BUCKET_FILL,COLOR_ERASE_MODE,100.,0.,0.)
pdb.gimp_edit_bucket_fill(layer,BG_BUCKET_FILL,BEHIND_MODE,0.)

如果您不想更改图像中的其他混合色,请保持颜色选择,将其增大一个像素,然后再应用两次绘制操作。增大选择范围会使上面的操作适用于边缘上的像素,这在这一点上非常重要。

本文链接:https://www.f2er.com/2578599.html

大家都在问