python制作gif 以及从gif中获得图片

先介绍python制作gif:

在用遗传算法的时候,想把种群进化过程中的接的分布动态的展示出来,所以就想到了制作gif,展示的时候直接贴到PPT里面就行,在网上找到一个gif在线制作的网站,不过那个网站体验极差,居然不能调整用于生成gif的图片顺序,之后突然想到之前看过一篇微信公众号文章介绍过python可以制作gif, 搜了一下果然找到多:

制作gif的图片是在matlab仿真程序中生成保存的:

gif转换代码:

import imageio, os
images = []
base_path = r'C:\Users\18811\Desktop\graph'
path = os.listdir(base_path)    # 读取文件夹下的图片
filenames = sorted(path, key=lambda x: int(x.split('.')[0]))   # 对文件按照文件名进行排序
print(filenames)
for filename in filenames:
    images.append(imageio.imread(os.path.join(base_path, filename)))
imageio.mimsave(os.path.join(base_path, 'res.gif'), images, duration=1)  # duration设置gif的间隔时间

生成的gif:

看起来效果还可以哦

-------------------------------------------------------分割线------------------------------------------------------

从gif中获取图片:

代码:

from PIL import Image
import sys
import os


def image_process(gif_path, save_path):
    try:
        im = Image.open(gif_path)
    except IOError:
        print("Load gif failed")
        sys.exit(1)
    cnt = 1
    mypalette = im.getpalette()   # 调色板

    try:
        while True:
            im.putpalette(mypalette)
            new_image = Image.new('RGBA', im.size)
            new_image.paste(im)
            new_image.save(os.path.join(save_path, str(cnt)+'.png'))
            cnt = cnt + 1
            im.seek(im.tell() + 1)
    except EOFError:
        pass


gif = r'C:\Users\18811\Desktop\graph\res.gif'
save = r'C:\Users\18811\Desktop\graph\12'
image_process(gif, save)

生成的图片:

实际生成的图片质量不高

 

posted @ 2018-12-24 20:58  Alpha205  阅读(154)  评论(0编辑  收藏  举报