在利用 Photoshop 等得到的 PNG 透明图中,一般都是包含 alpha channel 的.
下面的代码实现的功能:Remove PNG Transparency
#!/usr/bin/python3
#!--*-- coding:utf-8 --*--
def remove_transparency(img_pil, bg_colour=(255, 255, 255)):
# Only process if image has transparency
if img_pil.mode in ('RGBA', 'LA') or \
(img_pil.mode == 'P' and 'transparency' in img_pil.info):
# Need to convert to RGBA if LA format due to a bug in PIL (http://stackoverflow.com/a/1963146)
alpha = img_pil.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
# (http://stackoverflow.com/a/8720632 and http://stackoverflow.com/a/9459208)
bg = Image.new("RGBA", img_pil.size, bg_colour + (255,))
bg.paste(img_pil, mask=alpha)
return bg
else:
return img_pil
From: Remove transparency/alpha from any image using PIL - stackoverflow