Gimp python -fu скрипт, чтобы выбрать все с заданным цветом и изменить его на другой цвет - PullRequest
1 голос
/ 26 марта 2020

Я пишу скрипт плагина, который откроет файл, выберет по цвету, поменяет выделение на новый цвет, сохранит изображение как новый файл.

Я не знаю, как изменить цвет в новый цвет. Может ли кто-нибудь дать руководство?

Это то, что я имею до сих пор:

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

1 Ответ

1 голос
/ 26 марта 2020

Вам просто нужно заполнить выделение на сегменты:

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)

Обратите внимание, что это ответ на ваш технический вопрос, но вполне вероятно, что это не то, что вы хотите сделать (пиксельные края, оставшиеся ореолы и т. Д.) 1013 * ...). Хорошая методика обычно состоит в том, чтобы заменить исходный цвет прозрачностью (рисовать в режиме 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.)

Если вы не хотите изменять другие смешанные цвета на изображении, оставьте выбор цветов, увеличьте его на один пиксель, прежде чем применять две покрасочные работы. Увеличение выделения позволяет применять указанные выше операции к пикселям по краям, где это действительно важно.

...