Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Issues trying to Compose an image with masked channels
#1
Hello,

This is my first time trying to write a Python script in GIMP so I am still learning my way around this stuff.
I am trying to implement a script by which I can perform the following steps:

1. Decompose an Image into RGBA channels (Colors->Components->Decompose->Color Model: RGBA)
2. Recompose an Image using R,G channels with B and A using Mask Value of 255 (Colors->Components->Compose->Color Model: RGBA, B and A use 255 mask value)

To do this in Python, I am attempting the following steps:
Code:
       decomposed = pdb.plug_in_decompose(img, drawable, "RGBA", 0)
   
       gimp.message("Performed Decompose")

       # Grab the name of the original image
       fileNameWithExt = pdb.gimp_item_get_name(draw)
       fileNameNoExt = fileNameWithExt.split('.')

       # Create the layers
       gimp.message("Creating new Layers")
       gimp.message("Setting up Red Layer")
       layerR = pdb.gimp_layer_new_from_drawable(pdb.gimp_image_get_active_layer(decomposed[0]), decomposed[0])
       layerName = fileNameNoExt[0] + "_RGBA_Red"
       pdb.gimp_item_set_name(layerR, layerName)
       pdb.gimp_image_insert_layer(decomposed[0], layerR, None, 0)

       gimp.message("Setting up Green Layer")
       layerG = pdb.gimp_layer_new_from_drawable(pdb.gimp_image_get_active_layer(decomposed[1]), decomposed[1])
       layerName = fileNameNoExt[0] + "_RGBA_Green"
       pdb.gimp_item_set_name(layerG, layerName)
       pdb.gimp_image_insert_layer(decomposed[1], layerG, None, 1)

       gimp.message("Setting up Blue Layer")
       layerB = pdb.gimp_layer_new_from_drawable(pdb.gimp_image_get_active_layer(decomposed[2]), decomposed[2])
       layerName = fileNameNoExt[0] + "_RGBA_Blue"
       pdb.gimp_item_set_name(layerB, layerName)
       pdb.gimp_image_insert_layer(decomposed[2], layerB, None, 2)

       gimp.message("Setting up Alpha Layer")
       layerA = pdb.gimp_layer_new_from_drawable(pdb.gimp_image_get_active_layer(decomposed[3]), decomposed[3])
       layerName = fileNameNoExt[0] + "_RGBA_Alpha"
       pdb.gimp_item_set_name(layerA, layerName)
       pdb.gimp_image_insert_layer(decomposed[3], layerA, None, 3)
   
       gimp.message("Creating Layer Mask")
       channelB = pdb.gimp_layer_create_mask(layerB, 1)
       channelA = pdb.gimp_layer_create_mask(layerA, 1)

       gimp.message("Inserting Channels to Decomposed Images")
       pdb.gimp_image_insert_channel(decomposed[2], channelB, None, 0)
       pdb.gimp_image_insert_channel(decomposed[3], channelA, None, 0)

       # Now compose the new image into the target export image
       gimp.message("Starting Compose Step for Output")
       OutImage = pdb.plug_in_compose(decomposed[0], draw, decomposed[1], decomposed[2], decomposed[3], "RGBA")
       gimp.message("Done with Composing Output")

However, when I run this script, I see that my output image is the exact same as the input. This means that the 255 masks are not being applied to the output composed image.
Is the approach I am using correct here? How should I be applying the 255 Mask Value to the B and A channels similar to the settings available for the Compose option in the UI?

Any advice here would be much appreciated.
Reply


Messages In This Thread
Issues trying to Compose an image with masked channels - by pronay - 05-10-2023, 10:34 PM

Forum Jump: