mon*_*ero 7 python png python-imaging-library
我想用Python图像库将PNG32图像(透明度)转换为PNG8.到目前为止,我已成功转换为具有扎实背景的PNG8.
以下是我正在做的事情:
from PIL import Image
im = Image.open("logo_256.png")
im = im.convert('RGB').convert('P', palette=Image.ADAPTIVE, colors=255)
im.save("logo_py.png", colors=255)
Run Code Online (Sandbox Code Playgroud)
mon*_*ero 14
经过网上搜索,这里是完成我要求的代码:
from PIL import Image
im = Image.open("logo_256.png")
# PIL complains if you don't load explicitly
im.load()
# Get the alpha band
alpha = im.split()[-1]
im = im.convert('RGB').convert('P', palette=Image.ADAPTIVE, colors=255)
# Set all pixel values below 128 to 255,
# and the rest to 0
mask = Image.eval(alpha, lambda a: 255 if a <=128 else 0)
# Paste the color of index 255 and use alpha as a mask
im.paste(255, mask)
# The transparency index is 255
im.save("logo_py.png", transparency=255)
Run Code Online (Sandbox Code Playgroud)
来源:http: //nadiana.com/pil-tips-converting-png-gif虽然那里的代码没有调用im.load(),因而在我的os/python/pil版本上崩溃了.(看起来这是PIL中的错误).