Python 枕头如何优化GIF图像的透明度?

Python 枕头如何优化GIF图像的透明度?,python,python-imaging-library,image-manipulation,animated-gif,Python,Python Imaging Library,Image Manipulation,Animated Gif,我已经创建了一个动画GIF图像使用枕头,这是一个倒计时 当我检查生成图像的各个帧时,每个后续帧都有一些透明区域,但是,每次生成GIF时,我都会附加完整的图像 框架1: 框架2: 框架3: 这种优化很好,因为它减少了图像的大小,但我想知道这种透明度优化是在什么基础上进行的 用于生成图像的代码示例: frames = [] fnt = ImageFont.truetype('Assets/myfont.ttf',32) b = Image.open('Assets/pallet.p

我已经创建了一个动画GIF图像使用枕头,这是一个倒计时

当我检查生成图像的各个帧时,每个后续帧都有一些透明区域,但是,每次生成GIF时,我都会附加完整的图像

框架1:

框架2:

框架3:

这种优化很好,因为它减少了图像的大小,但我想知道这种透明度优化是在什么基础上进行的

用于生成图像的代码示例:

  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)

将image0与image1进行比较,并将所有未更改为完全透明的像素设置为完全透明,将图像的其余部分裁剪为可见像素,并存储放置位置的偏移。GIMP可以做一些类似的事情,如果你给它几个层并导出动画gif。类似的事情是很容易做到的,如果你想确定,你必须深入研究枕头的来源。祝你好运Anthony Thyssen在这里详细解释了。。。它是从ImageMagick的角度编写的,但是这些概念对于任何GIF动画都是通用的。