个人笔记-python生成gif

使用文件的修改时间戳进行排序

import os
import re
import imageio

# 设置图片所在的文件夹路径
folder_path = '/home/czy/ACode/AMAW_20240219/9.3.x(Discrete_time_marching)/9.3.17.11.1(Disc_concessive_CH_ZJ)/current_figures'  # 文件夹路径;linux用pwd获取路径

# # 获取文件夹内所有图片的文件名列表,并按顺序排序
image_files = sorted([f for f in os.listdir(folder_path) if f.endswith('.png')])

# 获取每个文件的完整路径
file_paths = [os.path.join(folder_path, f) for f in image_files]

# 使用文件的修改时间戳进行排序
sorted_file_paths = sorted(file_paths, key=os.path.getmtime)

# 提取排序后的文件名
sorted_filenames = [os.path.basename(p) for p in sorted_file_paths]

# 打印排序后的文件名以验证结果
for filename in sorted_filenames:
    print(filename)

# 创建一个空的GIF图片列表
images = []

# 遍历图片文件,并添加到GIF图片列表中
for filename in sorted_filenames:
    filepath = os.path.join(folder_path, filename)
    images.append(imageio.imread(filepath))

# 设置GIF的保存路径和持续时间(每个图片的显示时间)
gif_path = os.path.join(folder_path, 'animation.gif')
duration = 0.1  # 每个图片显示0.1秒

# 使用imageio的mimsave函数保存GIF动画
imageio.mimsave(gif_path, images, 'GIF', duration=duration)

print(f'GIF animation saved to {gif_path}')

0.1-4.9

假如gif太大,可使用以下代码改小

from PIL import Image
from PIL import ImageSequence
import os

# 设置工作目录到指定的路径(改成自己的)
os.chdir('/home/czy/ACode/AMAW_20240219/9.3.x(Discrete_time_marching)/9.3.17.11.1(Disc_concessive_CH_ZJ)/current_col_pt') 

im = Image.open('./animation.gif')
resize_frames= [frame.resize((frame.width // 2, frame.height // 2)) for frame in ImageSequence.Iterator(im)]  # 这里的2可改成任意数字,即比原来的改小一半,也可以直接改成数字(800,600)这种
resize_frames[0].save("animation_resize.gif", save_all=True, append_images=resize_frames[1:])
print("Done!")

在这里插入图片描述

使用文件名数字排序(如果文件名包括很多数字的话,排序会出错)

import os  
import imageio  
  
# 设置图片所在的文件夹路径  
folder_path = '/home/czy/ACode/AMAW_20240219/9.3.x(Discrete_time_marching)/9.3.17.11.1(Disc_concessive_CH_ZJ)/current_figures' 
  
# 获取文件夹内所有图片的文件名列表,并按顺序排序  
image_files = sorted([f for f in os.listdir(folder_path) if f.endswith('.png')])  
  
# 创建一个空的GIF图片列表  
images = []  
  
# 遍历图片文件,并添加到GIF图片列表中  
for filename in image_files:  
    filepath = os.path.join(folder_path, filename)  
    images.append(imageio.imread(filepath))  
  
# 设置GIF的保存路径和持续时间(每个图片的显示时间)  
gif_path = os.path.join(folder_path, 'animation.gif')  
duration = 0.1  # 每个图片显示0.1秒  
  
# 使用imageio的mimsave函数保存GIF动画  
imageio.mimsave(gif_path, images, 'GIF', duration=duration)  
  
print(f'GIF animation saved to {gif_path}')

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

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

相关文章

Python Virtualenv:创建独立的 Python 开发环境

在当今软件开发的世界中,Python 是一种备受欢迎的编程语言,其简洁、易读和强大的特性吸引了无数开发者。然而,随着项目的增多和复杂度的提高,有效地管理 Python 项目所需的各种依赖项和库变得越来越重要。在这种情况下&#xff0c…

IPv4 和 IPv6 是什么意思?它们之间的区别都有哪些?

什么是 IPv4 和 IPv6 什么是 IPv4 和 IPv6 呢?下面我们就来了解一下。 IPv4 就是互联网协议第 4 版,是目前广泛使用的网络协议版本。它由互联网工程任务组(IETF)在 1981 年开发完成。IPv4 使用 32 位地址,允许大约 4…

Vue——子级向父级使用props传递数据(函数)

文章目录 前言原理案例效果演示 前言 看到这个标题,相信很多人会说我,你之前博客写的父级向子级中传递数据使用的是props,然后说的子级向父级传递数据则是用的$emit。 并且还说了对于String、数组Array,只能是父级使用props传递…

深度学习_02_卷积神经网络循环神经网络

卷积神经网络 1. 卷积神经网络 神经元存在局部感受区域----感受野 . 第一个卷积神经网络雏形----新认知机 缺点:没有反向传播算法更新权值,模型性能有限 第一个大规模商用卷积神经网络----Lenet-5 缺点:没有大量数据和高性能计算资源。 第一个…

第三篇——大数据思维的科学基础

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 大数据时代,大数据思维的重要性不言而喻;而信息在…

eclipse添加maven插件

打开eclipse菜单 Help/Install New SoftwareWork with下拉菜单选择 2022-03 - https://download.eclipse.org/releases/2022-03‘type filter text’搜索框中输入 maven选择 M2E - Maven Integration for Eclipse一路next安装,重启eclipseImport项目时,就…

教程 | Navicat 17 管理连接新方法

Navicat 17 提供了比以往更多的连接数据库实例的方式。除了传统的连接字符串方式以外,Navicat 17 还支持 URI 连接,无论身在何处,都可以轻松地通过 URI 访问对象。另外,还有一个新的管理连接功能,即允许你通过一个以用…

Pandas读取excel异常

Pandas 处理excel异常: ValueError: Excel file format cannot be determined, you must specify an engine manually.今天使用pandas 处理excel的时候,抛出异常:ValueError: Excel file format cannot be determined, you must specify an engine manua…

【多模态】36、ShareGPT4V | 借助 GPT4V 的能够来生成更丰富的 caption 用于提升 LMM 模型的能力

文章目录 一、背景二、方法2.1 ShareGPT4V 数据集构建2.2 ShareGPT4V-PT 数据生成2.3 ShareGPT4V-7B Model 三、效果3.1 benchmark3.2 定量分析3.3 多模态对话 四、一些例子 论文:ShareGPT4V: Improving Large Multi-Modal Models with Better Captions 代码&#…

PolygonalSurfaceContourLineInterpolator 多边形交互器

1. 效果: 2.简介: 可以实现在多边形上进行交互,选择;在多边形曲面上实现轮廓点的交互绘制。 该类的使用需要结合 vtkPolygonalSurfacePointPlacer 类,定位点的功能也就是拾取器。 前提:输入的多边形曲面…

华为OD机试 - 两个字符串间的最短路径问题 - 动态规划(Java 2024 D卷 200分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

485数据采集模块

在工业自动化与智能化的浪潮中,数据采集作为整个系统的基础和核心,其准确性和实时性直接关系到生产效率和产品质量。而485数据采集模块,作为连接现场设备与上位机的重要桥梁,其性能与稳定性对于整个系统的运行至关重要。HiWoo Box…

GAT1399协议分析(8)--批量图像查询

一、请求消息定义 视频图像包含视频片段、 图像、 文件、 人员、 人脸、 机动车、 非机动车、 物品、 场景和视频案事件、 视频图像标签等对象 在消息体中,可以包含其中一种类,加上Data字段即可。 ImageInfo对象 二、请求消息实例 wireshark 抓包实例 请求: 文本化: /V…

Linux网络编程:数据链路层协议

目录 前言: 1.以太网 1.1.以太网帧格式 1.2.MTU(最大传输单元) 1.2.1.IP协议和MTU 1.2.2.UDP协议和MTU 1.2.3.TCP协议和MTU 2.ARP协议(地址解析协议) 2.1.ARP在局域网通信的角色 2.2.ARP报文格式 2.3.ARP报文…

sqli-labs 靶场 less-5、6 第五关和第六关:判断注入点、使用错误函数注入爆库名、updatexml()函数

SQLi-Labs是一个用于学习和练习SQL注入漏洞的开源应用程序。通过它,我们可以学习如何识别和利用不同类型的SQL注入漏洞,并了解如何修复和防范这些漏洞。Less 5 SQLI DUMB SERIES-5 判断注入点:1. 首先,尝试正常的回显内容&#x…

【精通NIO】NIO介绍

一、什么是NIO NIO,全称为New Input/Output,是Java平台中用于替代传统I/O(Blocking I/O)模型的一个功能强大的I/O API。NIO在Java 1.4版本中被引入,其设计目标是提供一种非阻塞的、低延迟的I/O操作方式,以…

BERT应用——文本间关联性分析

本文结合了自然语言处理(NLP)和深度学习技术,旨在分析一段指定的任务文本中的动词,并进一步探讨这个动词与一系列属性之间的关联性。具体技术路径包括文本的词性标注、语义编码和模型推断。 一、技术思路 NLP和词性标注 在自然…

C语言 | Leetcode C语言题解之第136题只出现一次的数字

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> singleNumbers(vector<int>& nums) {int eor 0;for (int num:nums)eor ^ num;int rightOne eor & (~eor 1); // 提取出最右的1int onlyOne 0;for (int cur : nums) {if ((cur…

Spring Boot中整合Jasypt 使用自定义注解+AOP实现敏感字段的加解密

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…

国外高防云服务器全面解析

国外高防云服务器是部署在海外市场&#xff0c;具备高级防护能力的云服务器。它们通常能够抵御大规模的分布式拒绝服务(DDoS)攻击和CC攻击&#xff0c;这类服务器特别适合对网络稳定性和数据安全性有较高要求的业务场景&#xff0c;如游戏行业、外贸电商等。下面将具体分析国外…