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))

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/161805.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】 课本里章节里所有蓝色字体的思维导图

Halcon (0):C# 联合Halcon方式简介和就业市场说明

文章目录 文章专栏前言相关视频联合C#开发直接导出C#代码Halcon引擎调用开发函数封装库工程导出 总结就业市场 文章专栏 Halcon开发 前言 根据我的测试,我发现Halcon和WPF中的halcon插件,代码具有对应性。就是你会了Halcon,WPF也差不多久会了…

Windows10下Mysql8.0安装教程

文章目录 1.下载Mysql8.02.解压Mysql安装包到指定目录3.初始化Mysql服务4.安装Mysql服务5.启动Mysql服务6.登录Mysql服务7.修改Mysql密码8.重启Mysql服务停止服务启动服务 1.下载Mysql8.0 链接:https://pan.baidu.com/s/1uP2xZj8g05xg-oHX_nfnmA 提取码:…

【Python数学练习1】

一、题目 中文描述&#xff1a; 给出正整数N&#xff0c;输出满足条件的数对(a,b)的个数&#xff0c;满足gcd(a,b)b, a,b < n 数学描述&#xff1a; 二、解法 解法1&#xff1a; 对应Python代码&#xff1a; def num_fact(n):num 0for i in range(1, n 1):if n % i …

CTF-PWN-tips

文章目录 overflowscanfgetreadstrcpystrcat Find string in gdbgdbgdb peda Binary ServiceFind specific function offset in libc手工自动 Find /bin/sh or sh in library手动自动 Leak stack addressFork problem in gdbSecret of a mysterious section - .tlsPredictable …

Confluence 快速安装教程

安装jdk yum install -y java-1.8.0-openjdk.x86_64 java -version 安装MySQL mkdir -p /data/mysql/data chmod 777 /data/mysql/datadocker rm -f mysql docker run -d --name mysql \-p 3306:3306 \-e MYSQL_ROOT_PASSWORDfingard1 \-v /data/mysql/data:/var/lib/mysql …

【代码随想录】算法训练计划25

1、216. 组合总和 III 题目&#xff1a; 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 思路&am…

【算法每日一练]-图论(保姆级教程 篇5(LCA,最短路,分层图)) #LCA #最短路计数 #社交网络 #飞行路线 # 第二短路

今天讲最短路统计和分层图 目录 题目&#xff1a;LCA 思路&#xff1a; 题目&#xff1a;最短路计数 思路&#xff1a; 题目&#xff1a;社交网络 思路&#xff1a; 题目&#xff1a;飞行路线 思路&#xff1a; 题目&#xff1a;第二短路 思路&#xff1a; 题目&a…

谷歌投资Character.AI,展现AI领域的战略布局和创新能力

谷歌&#xff08;Google&#xff09;作为全球最大的互联网公司之一&#xff0c;一直在人工智能&#xff08;AI&#xff09;领域发挥着引领和推动的作用。近日&#xff0c;据消息人士透露&#xff0c;谷歌正与人工智能初创公司 Character.AI 进行投资谈判&#xff0c;计划投资数…

掌握未来技术趋势,Python编程引领人工智能时代

掌握未来技术趋势&#xff0c;Python编程引领人工智能时代 摘要&#xff1a;Python作为一种高级编程语言&#xff0c;在人工智能领域中扮演着越来越重要的角色。本文将通过介绍Python编程的特点、应用场景及发展前景&#xff0c;展望Python未来的发展趋势&#xff0c;并结合代…

【springboot笔记】程序可用性检测ApplicationAvailability

1.背景 springboot-3.1.5 ApplicationAvailability LivenessState ReadinessState AvailabilityChangeEvent 我们可以通过ApplicationAvailability获取当前应用程序的可用性&#xff0c;这个可用性包括ApplicationContext和对外请求路由两种。 LivenessState 是表示Applicatio…

解决docker运行elastic服务端启动不成功

现象&#xff1a; 然后查看docker日志&#xff0c;发现有vm.max_map_count报错 ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 解决办法&#xff1a; 1. 宿主机&#xff08;运行doc…

腾讯云新用户优惠活动有哪些可以参加?腾讯云新人服务器优惠活动

腾讯云作为国内领先的云服务提供商&#xff0c;不仅为用户提供稳定可靠的云服务器&#xff0c;还为新用户带来了一系列的优惠活动和代金券&#xff0c;以降低购买成本&#xff0c;提高业务效益。在这里&#xff0c;我们将为您详细介绍腾讯云服务器的新人优惠活动及代金券&#…

进程程序替换与exec系统调用

进程程序替换 进程程序替换是指将一个正在运行的进程替换为另一个可执行程序。它的本质是调用了Linux操作系统中的exec系统调用。而exec系统调用是一个家族函数&#xff0c;例如execl、execv、execle、execve等。它们的共同特点是当当前进程执行到该函数时&#xff0c;就会直接…

竞赛 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分&#xff1a;4.2 损失函数&#xff1a;4.3 搭建seq2seq框架&#xff1a;4.4 测试部分&#xff1a;4.5 评价NLP测试效果&#xff1a;4.6 梯度截断…

美颜sdk是什么?美颜sdk技术解析与比较

美颜SDK的出现为开发者提供了快速实现高质量美颜效果的工具&#xff0c;然而&#xff0c;在众多美颜SDK中&#xff0c;技术实现和效果差异巨大。本文将对美颜SDK进行技术解析&#xff0c;并进行比较&#xff0c;以帮助开发者更好地选择适合其应用需求的美颜SDK。 一、美颜SDK…

GCD:异步同步?串行并发?一文轻松拿捏!

GCD 文章目录 GCD进程线程进程与线程的关系进程与线程的区别 任务&#xff08;执行的代码&#xff09;队列线程与队列的关系 队列任务**同步执行任务&#xff08;sync&#xff09;**辅助方法**异步执行任务&#xff08;async)**总结栅栏任务迭代任务 队列详细属性QoSAttributes…

视频剪辑技巧:简单步骤,批量剪辑并随机分割视频

随着社交媒体平台的广泛普及和视频制作需求的急剧增加&#xff0c;视频剪辑已经成为了当今社会一项不可或缺的技能。然而&#xff0c;对于许多初学者来说&#xff0c;视频剪辑可能是一项令人望而生畏的复杂任务。可能会面临各种困难&#xff0c;如如何选择合适的软件和硬件、如…

Vue3 shallowRef 和 shallowReactive

一、shallowRef 使用shallowRef之前需要进行引入&#xff1a; import { shallowRef } from vue; 使用方法和ref 的使用方法一致&#xff0c;以下是二者的区别&#xff1a; 1. 如果ref 和 shallowRef 都传入的是普通数据类型的数据&#xff0c;那么他们的效果是一样的&#x…

​软考-高级-系统架构设计师教程(清华第2版)【第18章 安全架构设计理论与实践(P648~690)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第18章 安全架构设计理论与实践&#xff08;P648~690&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图