How to programmatically set color in gimp (pythonfu)?

598 views Asked by At

Using Python, I was able to add a floating text layer using

text_layer = pdb.gimp_text_fontname(image, drawable, x, y, text, border, antialias, size, size_type, fontname)

However, the text appears in black. Specifically pdb.gimp_text_layer_get_color(text_layer) returns RGB (0.0, 0.0, 0.0, 1.0)

I want the font to be in a different color.

I tried

col = gimpcolor.RGB(44.7, 46.7, 58.0)
pdb.gimp_text_layer_set_color(text_layer, col)

Trying pdb.gimp_text_layer_get_color(text_layer) now returns RGB (44.7, 46.7, 58.0, 1.0) but the text in now in white.

How to make the text appear in my desired color or where does gimpcolor object's documentation exist?

1

There are 1 answers

0
xenoid On BEST ANSWER

The text is created with the current foreground color:

# Two ways to set the color (pick one)

# Color set with the gimp object
gimp.set_foreground(gimpcolor.RGB(0,0,255))

# Color set via PDB API
pdb.gimp_context_set_foreground(gimpcolor.RGB(0,0,255))

text_layer = pdb.gimp_text_fontname(image, None, 100, 100, 'Gimp', 0, True, 80,0, 'Bungee')

Also: careful with number types of the color channels. AFAIK for gimpcolor.RGB(r,g,b):

  • if the r/g/b argument is a float, it is understood as being in the [0.0 .. 1.0] range (and clamped if outside that range)
  • if it is an integer, is is understood as being in the [0 .. 255] range

So for instance gimpcolor.RGB(1.,1.,1.) is white (1. = 100%), but gimpcolor.RGB(1,1,1) is nearly black (1/255 = 0.4%).