gif 中的透明背景使用 Python Imageio
transparent background in gif using Python Imageio
基本上我使用以下代码从图像中制作 gif,我的图像 png
具有透明背景,但 gif 具有黑色背景。我不知道如何制作具有透明背景的 gif。
#gif writer
with io.get_writer('my.gif', mode='I', duration=0.1) as writer:
for filename in file_names:
image = io.imread(filename)
writer.append_data(image)
#writer.close()
其中 filenames
是一个数组,其中包含要使用的所有文件名。
试试 PIL
from PIL import Image
def gen_frame(path):
im = Image.open(path)
alpha = im.getchannel('A')
# Convert the image into P mode but only use 255 colors in the palette out of 256
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.info['transparency'] = 255
return im
im1 = gen_frame('frame1.png')
im2 = gen_frame('frame2.png')
im1.save('GIF.gif', save_all=True, append_images=[im2], loop=5, duration=200)
基本上我使用以下代码从图像中制作 gif,我的图像 png
具有透明背景,但 gif 具有黑色背景。我不知道如何制作具有透明背景的 gif。
#gif writer
with io.get_writer('my.gif', mode='I', duration=0.1) as writer:
for filename in file_names:
image = io.imread(filename)
writer.append_data(image)
#writer.close()
其中 filenames
是一个数组,其中包含要使用的所有文件名。
试试 PIL
from PIL import Image
def gen_frame(path):
im = Image.open(path)
alpha = im.getchannel('A')
# Convert the image into P mode but only use 255 colors in the palette out of 256
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.info['transparency'] = 255
return im
im1 = gen_frame('frame1.png')
im2 = gen_frame('frame2.png')
im1.save('GIF.gif', save_all=True, append_images=[im2], loop=5, duration=200)