gpt4 book ai didi

python - 使用 PIL 将 PNG32 转换为 PNG8,同时保留透明度

转载 作者:太空狗 更新时间:2023-10-29 21:20:24 25 4
gpt4 key购买 nike

我想使用 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)

最佳答案

在网上大量搜索后,这里是完成我所要求的代码:

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)

来源:http://nadiana.com/pil-tips-converting-png-gif尽管那里的代码没有调用 im.load(),因此在我的 os/python/pil 版本上崩溃了。 (看起来这是 PIL 中的错误)。

关于python - 使用 PIL 将 PNG32 转换为 PNG8,同时保留透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com