我使用Pillow创建了一个GIF动画图片,这是一个倒计时计时器。
当我检查生成图像的各个帧时,每个后续帧都有一些透明区域,但是,每次生成GIF时,我都会附加整个图像。
此优化很好,因为它可以减小图像的大小,但是我想知道此透明度优化是在什么基础上完成的。
用于生成图像的代码示例:
frames = []
fnt = ImageFont.truetype('Assets/myfont.ttf',32)
b = Image.open('Assets/pallet.png')
b = b.convert(mode='RGBA',palette=Image.ADAPTIVE)
draw = ImageDraw.Draw(b)
draw.text((225,31), "10", fill=(255,255,255,255), font=fnt)
draw.text((288,31), "10", fill=(255,255,255,255), font=fnt)
draw.text((353,31), "10", fill=(255,255,255,255), font=fnt)
bref = b.copy()
draw.text((412,31), "59", fill=(255,255,255), font=fnt)
frames.append(b)
for i in range(58, 0, -1):
copyf = bref.copy()
df = ImageDraw.Draw(copyf)
df.text((412,31),str(i), fill=(255,255,255), font=fnt)
frames.append(copyf)
f = BytesIO()
frames[0].save(f, format='GIF', save_all=True,append_images=frames[1:], duration=1000, loop=0)