Как Pillow оптимизирует прозрачность изображения GIF? - PullRequest
0 голосов
/ 29 февраля 2020

Я создал анимированное GIF-изображение, используя подушку, которая является таймером обратного отсчета.

Когда я проверяю отдельные кадры сгенерированного изображения, однако каждый последующий кадр имеет некоторую прозрачную область, я добавляю полное изображение каждый раз при генерации GIF.

frame1:
enter image description here
frame2:
enter image description here
frame3:
enter image description here

Эта оптимизация хороша, поскольку она уменьшает размер изображения, но я хотел бы знать, на каком основании проводится оптимизация прозрачности.

Пример кода, использованный для генерации изображения:

  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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...