0

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?

sprog
  • 40
  • 7
  • [jsbueno's](https://stackoverflow.com/a/25982891/19530650) answer, mentioning that color param can be passed a string. In this case, passing the '#rrggbb' worked. – sprog Nov 02 '22 at 03:14

1 Answers1

1

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%).

xenoid
  • 8,396
  • 3
  • 23
  • 49