gimpgimpfupython-fu

How to programmatically set color in gimp (pythonfu)?


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?


Solution

  • 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):

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