使用python将自定义调色板和自定义帧速率放在动画gif中

问题描述 投票:0回答:1

我正在尝试编写一系列numpy数组作为GIF动画。我需要严格控制色彩图或调色板(哪种颜色与数组中的每个整数值相关联),以便它匹配数组中的索引

我找到了imageio.mimwrite。它具有设置帧速率和使用压缩的能力,这看起来很棒。

imageio.mimwrite('test.gif', ims, duration=0.2, subrectangles=True)

但我还没有找到一种设置自定义调色板的方法,只有颜色的数量似乎可以设置......我知道我可以将图像写入磁盘然后再写入图像,但我宁愿不必这样做。

使用枕头,我可以使用自定义调色板保存gif:

im = Image.fromarray(...)
im.putpalette(...)
for i in im_list: i.putpalette(...)
im.save(filename, save_all=True, append_images=[image_list])

但我还没有找到一种设置调色板和帧率的方法......

任何的想法 ?

谢谢!

python-imaging-library frame-rate animated-gif color-palette python-imageio
1个回答
1
投票

如果它可以帮助某人,这里有一段代码使用PIL来保存具有自定义持续时间的调色板动画gif:

from PIL import Image
# image_list: list of numpy 2d uint8 array
# duration is a list of duration for each individual frame
# loop, 0 for infinite
# colormap_np : n by 3 uint8 array
pil_ims = [Image.fromarray(i, mode='P') for i in image_list]
pil_ims[0].save(
    filename='test.gif',
    save_all=True,
    append_images=pil_ims[1:],
    duration=duration,
    loop=0,
    palette=colormap.tobytes()
)
© www.soinside.com 2019 - 2024. All rights reserved.