Я создал анимированное GIF-изображение, используя подушку, которая является таймером обратного отсчета.
Когда я проверяю отдельные кадры сгенерированного изображения, однако каждый последующий кадр имеет некоторую прозрачную область, я добавляю полное изображение каждый раз при генерации GIF.
frame1:
frame2:
frame3:
Эта оптимизация хороша, поскольку она уменьшает размер изображения, но я хотел бы знать, на каком основании проводится оптимизация прозрачности.
Пример кода, использованный для генерации изображения:
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)