Python播放GIF图片(ChatGPT代码参考)

在网上找了好几个方法, 最后还是出现各种问题,解决不了播放GIF的功能。

最后,通过ChatGPT给出了简单明了的方案(使用第三方库imageiomatplotlib.animation来实现),调试直接通过。

但有小瑕疵,就是显示gif时隐藏掉坐标轴的功能无效,于是再做了一下优化。

 

[最终代码]

显示GIF动画:

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import imageio

import numpy as np
import os

# -------------display gif---------------
def display_gif_file(): 

    # 加载GIF文件
    gif_path = "mygif.gif"
    gif = imageio.mimread(gif_path)

    # 创建图形窗口
    fig = plt.figure()
    
    # 定义更新函数,用于更新图像
    def update(frame):
        plt.clf()  # 清空图形窗口
        plt.imshow(frame)  # 显示当前帧
        plt.axis('off') # 隐藏x轴和y轴

    """ #方法二#
    # 创建图形窗口和子图
    fig, ax = plt.subplots()
    
    # 定义更新函数,用于更新图像
    def update(frame):
        ax.clear()  # 清空子图
        ax.imshow(frame)  # 显示当前帧
        ax.set_axis_off() # 隐藏x轴和y轴
    """ 

    # 创建动画
    ani = animation.FuncAnimation(fig, update, frames=gif, interval=60)

    # 显示动画
    plt.show()

 

GIF图片生成方法:

# -------------generate gif-----------------
def generate_gif_file():

    y = np.random.randint(30,90, size=(20))

    filenames = []
    num = 0
    for i in y:
        num += 1
        # 绘制n张折线图
        plt.plot(y[:num])
        plt.ylim(10, 300)
        # 保存图片文件
        filename = f'{num}.png'
        filenames.append(filename)
        plt.savefig(filename)
        plt.close()
        print("save:"+filename)
    # 生成gif
    finalImgName =r'mygif.gif' 
    with imageio.get_writer(finalImgName, mode='I') as writer:
        for filename in filenames:
            image = imageio.imread(filename)
            writer.append_data(image)
            print(filename)
            
    # 删除n张折线图
    for filename in set(filenames):
        os.remove(filename)

    print("gif done.")

 

GIF效果演示:

 

posted @ 2023-06-23 17:37  瀚瀚  阅读(322)  评论(0编辑  收藏  举报