在利用 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

Last modification:May 13th, 2019 at 01:28 pm