I have a numpy array that is written to an image, a RGB colormap added as a palette, and all that remains is a transparency channel (256 values) on top. I have tried converting to RGBA, LA, and other ways around it but, I cannot figure out how to add this multi-value channel on top as a palette.
Here is an example that I have that adds a single-value channel of transparency:
# data = numpy array 1624x3856
im = Image.fromarray(data)
im = im.convert('P')
# cmap is a 768-valued RGB array
im.putpalette(my_cmap)
im.save('filename.png', transparency=0)
The channel I want to save is as follows:
# len(alpha) = 256
alpha = [0,255,255,255...255,255,255]
Any help would be greatly appreciated.
Alpha channel. An alpha channel, representing transparency information on a per-pixel basis, can be included in grayscale and truecolor PNG images. An alpha value of zero represents full transparency, and a value of (2^bitdepth)-1 represents a fully opaque pixel.
To load the image, we simply import the image module from the pillow and call the Image. open(), passing the image filename. Instead of calling the Pillow module, we will call the PIL module as to make it backward compatible with an older module called Python Imaging Library (PIL).
Here is a simple example on how to ensure a Pillow image is RGBA :
img = Image.open("SOME_RGB_IMAGE.png")
if img.mode == "RGB":
a_channel = Image.new('L', img.size, 255) # 'L' 8-bit pixels, black and white
img.putalpha(a_channel)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With