我有一个写入图像的numpy数组,一个RGB色图作为一个调色板添加,剩下的只是一个透明通道(256个值)在顶部.我已经尝试过转换为RGBA,LA和其他方法但是,我无法弄清楚如何将这个多值通道添加到顶部作为调色板.
以下是我添加单值透明通道的示例:
# 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)
我要保存的频道如下:
# len(alpha) = 256
alpha = [0,255,255,255...255,255,255]
任何帮助将不胜感激.
解决方法:
准备正确的RGBA格式以使用Alpha通道
准备RGB部分后(从上面的data.shape看到的问题)
您的光栅图像必须获得相应的Alpha图层.
为此,请添加对实例方法的调用
Image.putalpha(anAlphaLAYER)
这会添加/替换图像中的alpha图层.如果图像没有alpha图层,则会将其转换为LA或RGBA,因此在调用此方法之前,请准备好RGB部件.新图层(anAlphaLAYER)必须为L或1.
所以一定要有一个与你的im.size(X,Y)匹配的AlphaLAYER.shape.另一种可能性是从整数值创建alpha层并且ad-hoc修改它的单元格值.
早在numpy.array中完成了完整的RGBA格式,整个问题不会给你带来任何麻烦.
标签:python,pillow