在利用 Photoshop 等得到的 PNG 透明图中,一般都是包含 alpha channel 的.
但是IOS图标不允许图标中包含 Alpha通道。
下面的代码实现的功能:Remove PNG Transparency
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/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