翼度科技»论坛 编程开发 python 查看内容

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

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
在网上找了好几个方法, 最后还是出现各种问题,解决不了播放GIF的功能。
最后,通过ChatGPT给出了简单明了的方案(使用第三方库imageio和matplotlib.animation来实现),调试直接通过。
但有小瑕疵,就是显示gif时隐藏掉坐标轴的功能无效,于是再做了一下优化。

 
[最终代码]
显示GIF动画:
  1. import matplotlib.pyplot as plt
  2. import matplotlib.animation as animation
  3. import imageio
  4. import numpy as np
  5. import os
  6. # -------------display gif---------------
  7. def display_gif_file():
  8.     # 加载GIF文件
  9.     gif_path = "mygif.gif"
  10.     gif = imageio.mimread(gif_path)
  11.     # 创建图形窗口
  12.     fig = plt.figure()
  13.    
  14.     # 定义更新函数,用于更新图像
  15.     def update(frame):
  16.         plt.clf()  # 清空图形窗口
  17.         plt.imshow(frame)  # 显示当前帧
  18.         <strong>plt.axis('off') # 隐藏x轴和y轴</strong>
  19.     """ #方法二#
  20.     # 创建图形窗口和子图
  21.     fig, ax = plt.subplots()
  22.    
  23.     # 定义更新函数,用于更新图像
  24.     def update(frame):
  25.         ax.clear()  # 清空子图
  26.         ax.imshow(frame)  # 显示当前帧
  27.         ax.set_axis_off() # 隐藏x轴和y轴
  28.     """
  29.     # 创建动画
  30.     ani = animation.FuncAnimation(fig, update, frames=gif, interval=60)
  31.     # 显示动画
  32.     plt.show()
复制代码
 
GIF图片生成方法:
  1. # -------------generate gif-----------------
  2. def generate_gif_file():
  3.     y = np.random.randint(30,90, size=(20))
  4.     filenames = []
  5.     num = 0
  6.     for i in y:
  7.         num += 1
  8.         # 绘制40张折线图
  9.         plt.plot(y[:num])
  10.         plt.ylim(10, 300)
  11.         # 保存图片文件
  12.         filename = f'{num}.png'
  13.         filenames.append(filename)
  14.         plt.savefig(filename)
  15.         plt.close()
  16.         print("save:"+filename)
  17.     # 生成gif
  18.     finalImgName =r'mygif.gif'
  19.     with imageio.get_writer(finalImgName, mode='I') as writer:
  20.         for filename in filenames:
  21.             image = imageio.imread(filename)
  22.             writer.append_data(image)
  23.             print(filename)
  24.             
  25.     # 删除折线图
  26.     for filename in set(filenames):
  27.         os.remove(filename)
  28.     print("gif done.")
复制代码
 
GIF效果演示:

 

来源:https://www.cnblogs.com/gaoxihan/p/17499434.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具