Python利用PIL实现多张图片合成gif动画的案例详解

 更新时间:2023年11月19日 11:12:26   作者:River Chandler  
这篇文章主要介绍了Python利用PIL实现多张图片合成gif动画的案例,文章通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,感兴趣的小伙伴可以自己动手试一下
  • Python 由多张图片合成gif动画 
  • 案例
import os
figure_save_path = "file_fig_test"
import warnings
warnings.filterwarnings("error")
import numpy as np
np.random.seed(0)
import matplotlib.pyplot as plt
from PIL import Image
import time
 
num = 100
gif_frames = []
open_time = []
save_time = []
plot_time = []
 
for i in range(num):
    #图形绘制
    start_time = time.time()
    plt.scatter(np.random.random(), np.random.random())
    end_time = time.time()
    plot_time.append(end_time-start_time)
 
    #创建图形保存文件夹
    if not os.path.exists(figure_save_path):
        os.makedirs(figure_save_path)
    else:
        pass
 
    #保存图形
    start_time = time.time()
    plt.savefig(os.path.join(figure_save_path, str(i) + ".jpg"))
    end_time = time.time()
    save_time.append(end_time-start_time)
 
    #打开图形
    start_time = time.time()
    img = Image.open(os.path.join(figure_save_path, str(i) + ".jpg"))
    end_time = time.time()
    open_time.append(end_time-start_time)
 
    gif_frames.append(img)
 
print("动画绘制开始")
start_time = time.time()
gif_frames[0].save("test.gif",
        save_all=True, append_images=gif_frames[1:], duration=200, loop=0)
end_time = time.time()
print("动画绘制完成,用时:", round(end_time-start_time, 6))
print("平均动画绘制完成,用时:", round((end_time-start_time)/num, 6))
 
print("平均图形绘制用时:", round(sum(plot_time)/len(plot_time), 6))
print("平均图形保存用时:", round(sum(save_time)/len(save_time), 6))
print("平均图形打开用时:", round(sum(open_time)/len(open_time), 6))
  • 动画生成结果就不放了 
  • 让我们看看什么操作最耗时

动画绘制开始
动画绘制完成,用时: 3.61503
平均动画绘制完成,用时: 0.03615
平均图形绘制用时: 0.004437
平均图形保存用时: 0.146415
平均图形打开用时: 0.000287

  • 这是保存图形用时随图像数量的变化 
    • 考虑到绘制点数的增长,这是合理的

  •  这是图形打开用时
    • 变换不大,这是合理的

  • 这是每次scatter的用时
    • 看上去也比较合理

  • 那我们再看看随着图片数量的增长,绘制动画的用时变化
gif_time = []
for i in range(20, 100):
    new_frames = gif_frames[:i]
    start_time = time.time()
    new_frames[0].save(str(i)+".gif",
        save_all=True, append_images=gif_frames[1:], duration=200, loop=0)
    end_time = time.time()
    gif_time.append(end_time-start_time)
    print("finished:", str(i))

  • 这就比较迷
    • 不过问题不大

到此这篇关于Python利用PIL实现多张图片合成gif动画的案例详解的文章就介绍到这了,更多相关Python PIL合成gif动图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中的程序流程控制语句

    Python中的程序流程控制语句

    这篇文章主要介绍了Python中的程序流程控制语句,本篇博客将会讲述一下Python语言中的流程控制语句,在高中我们数学中学过程序流程题,下面我们来看看python中得流程语句会是怎么样呢,需要的小伙伴可以参考一下
    2022-02-02
  • 一文带你全面理解Python中的self

    一文带你全面理解Python中的self

    对于初学Python的同学来说,在class中经常看到self。那么,到底self是个啥?这篇文章小编就来带大家深入了解一下,希望对大家有所帮助
    2023-03-03
  • python爬取分析超级大乐透历史开奖数据

    python爬取分析超级大乐透历史开奖数据

    这篇文章主要介绍了python爬取分析超级大乐透历史开奖数据,本次使用了requests和beautifulsoup库进行数据的爬取,通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Python自动化测试笔试面试题精选

    Python自动化测试笔试面试题精选

    在本篇文章里小编给大家整理的是一篇关于Python自动化测试笔试面试时常见的编程题,需要的朋友们可以学习参考下。
    2020-03-03
  • 详解Swift中属性的声明与作用

    详解Swift中属性的声明与作用

    Swift中的属性可以被分为存储属性和计算属性,本文将为大家详解Swift中属性的声明与作用,需要的朋友可以参考下
    2016-06-06
  • python常用数据结构字典梳理

    python常用数据结构字典梳理

    这篇文章主要介绍了python常用数据结构字典梳理,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • python 借助numpy保存数据为csv格式的实现方法

    python 借助numpy保存数据为csv格式的实现方法

    今天小编就为大家分享一篇python 借助numpy保存数据为csv格式的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python中使用kitti数据集实现自动驾驶(绘制出所有物体的行驶轨迹)

    Python中使用kitti数据集实现自动驾驶(绘制出所有物体的行驶轨迹)

    这篇文章主要介绍了Python中使用kitti数据集实现自动驾驶——绘制出所有物体的行驶轨迹,本次内容主要是画出kitti车的行驶的轨迹,需要的朋友可以参考下
    2022-06-06
  • Python结合Flask框架构建一个简易的远程控制系统

    Python结合Flask框架构建一个简易的远程控制系统

    这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还具备实时屏幕截图功能,需要的可以参考下
    2025-03-03
  • 巧用python和libnmapd,提取Nmap扫描结果

    巧用python和libnmapd,提取Nmap扫描结果

    本文将会讲述一系列如何使用一行代码解析 nmap 扫描结果,其中会在 Python 环境中使用到 libnmap 里的 NmapParser 库,这个库可以很容易的帮助我们解析 nmap 的扫描结果
    2016-08-08

最新评论