如何用指定的背景颜色替换任何图像(png,jpg,rgb,rbga)的alpha通道?它还必须适用于没有Alpha通道的图像.
解决方法
这可以通过检查图像是否透明来完成
def remove_transparency(im,bg_colour=(255,255,255)): # Only process if image has transparency (https://stackoverflow.com/a/1963146) if im.mode in ('RGBA','LA') or (im.mode == 'P' and 'transparency' in im.info): # Need to convert to RGBA if LA format due to a bug in PIL (https://stackoverflow.com/a/1963146) alpha = im.convert('RGBA').split()[-1] # Create a new background image of our matt color. # Must be RGBA because paste requires both images have the same format # (https://stackoverflow.com/a/8720632 and https://stackoverflow.com/a/9459208) bg = Image.new("RGBA",im.size,bg_colour + (255,)) bg.paste(im,mask=alpha) return bg else: return im