将非透明图片转为透明GIF图片PIL
Convert non-transparent image to transparent GIF image PIL
如何使用 PIL 将不透明的 PNG 文件转换为透明的 GIF 文件?
我的乌龟图形游戏需要它。我似乎只能透明化 PNG 文件,而不是 GIF 文件。
这并不明显,至少对我来说,你应该怎么做!对于不存在的问题,这可能是不必要的解决方法,因为我对 PIL 的内部工作方式一无所知。
无论如何,我使用这个输入图像把它弄乱了足够长的时间:
#!/usr/bin/env python3
from PIL import Image, ImageDraw, ImageOps
# Open PNG image and ensure no alpha channel
im = Image.open('start.png').convert('RGB')
# Draw alpha layer - black square with white circle
alpha = Image.new('L', (100,100), 0)
ImageDraw.Draw(alpha).ellipse((10,10,90,90), fill=255)
# Add our lovely new alpha layer to image
im.putalpha(alpha)
# Save result as PNG and GIF
im.save('result.png')
im.save('unhappy.gif')
当我到达这里时,PNG 有效,GIF 是 “不开心”。
PNG 如下:
“不开心” GIF如下:
这是我修复 GIF 的方法:
# Extract the alpha channel
alpha = im.split()[3]
# Palettize original image leaving last colour free for transparency index
im = im.convert('RGB').convert('P', palette=Image.ADAPTIVE, colors=255)
# Put 255 everywhere in image where we want transparency
im.paste(255, ImageOps.invert(alpha))
im.save('result.gif', transparency=255)
关键字:Python,图像处理,PIL,Pillow,GIF,透明度,alpha,保留,透明索引。
如何使用 PIL 将不透明的 PNG 文件转换为透明的 GIF 文件?
我的乌龟图形游戏需要它。我似乎只能透明化 PNG 文件,而不是 GIF 文件。
这并不明显,至少对我来说,你应该怎么做!对于不存在的问题,这可能是不必要的解决方法,因为我对 PIL 的内部工作方式一无所知。
无论如何,我使用这个输入图像把它弄乱了足够长的时间:
#!/usr/bin/env python3
from PIL import Image, ImageDraw, ImageOps
# Open PNG image and ensure no alpha channel
im = Image.open('start.png').convert('RGB')
# Draw alpha layer - black square with white circle
alpha = Image.new('L', (100,100), 0)
ImageDraw.Draw(alpha).ellipse((10,10,90,90), fill=255)
# Add our lovely new alpha layer to image
im.putalpha(alpha)
# Save result as PNG and GIF
im.save('result.png')
im.save('unhappy.gif')
当我到达这里时,PNG 有效,GIF 是 “不开心”。
PNG 如下:
“不开心” GIF如下:
这是我修复 GIF 的方法:
# Extract the alpha channel
alpha = im.split()[3]
# Palettize original image leaving last colour free for transparency index
im = im.convert('RGB').convert('P', palette=Image.ADAPTIVE, colors=255)
# Put 255 everywhere in image where we want transparency
im.paste(255, ImageOps.invert(alpha))
im.save('result.gif', transparency=255)
关键字:Python,图像处理,PIL,Pillow,GIF,透明度,alpha,保留,透明索引。