太神奇了!GIF的合成与提取这么好玩
今天辰哥教大家一个Python有趣好玩的小功能:将多张图片转为GIF,同时也可以将一个GIF动图提取出里面的图片
在开始之前,先来一个动图开头(预览)
01、图片转GIF动图
1、准备工作
在开始合并前,先明确要转换哪些图片,以及安装对应的Python库
这里在网上找了9张图片,并存放在img文件夹下,这9张图片一会待转换为GIF动图。
pip install imageio
通过上面的命令安装imageio库,该库功能是将多张图转为GIF。
导入相应的库
import imageio
import os
import os.path as osp
2.转换
读取img文件夹下的所有图片,并通过imageio读取图片内容。
转换并保存为chenge.gif
其中的duration = 1 / fps ,也就是说duration越大,动图变化越慢,当前duration是0.1,其结果如下:
当前duration是0.5,其结果如下:
02、GIF提取图片
1.准备工作
导入PIL库
from PIL import Image
待提取的gif(这里使用上面保存的chenge.gif)
2.提取
这里将chenge.gif提取图片,保存到gif-to-pic文件夹中,并从0.jpg开始命名
可以看到gif动图里面的图片已成功提取。
03、小结
本文讲解了如何将多张图片转为GIF,同时也讲解了通过一个GIF动图提取出里面的图片。为了方便大家练习,辰哥已将代码模块化。
为了大家方便学习,辰哥已经把本文的完整源码和对应的图片及动图上传,需要通过公众:gifpic,获取
最后,不明白的地方可以在下方留言,一起交流。
太神奇了!GIF的合成与提取这么好玩的更多相关文章
- 【Spring Cloud 源码解读】之 【这也太神奇了,RestTemplate加上一个@LoadBalanced注解就能实现负载均衡!】
前提概要: 前天,有个前端大佬问了我两个问题:为啥不引入Ribbon依赖就能使用Ribbon?为啥RestTemplate加上@LoadBalanced注解就能负载均衡了?我也表示很疑惑,而我自己其实 ...
- MVC 直接把数据库的数据输出到view(太神奇了)
@model IEnumerable<MvcApplication32.Models.UserInfo> 后台是集合类型了 ,传到前台是model了,用 IEnumerable<&g ...
- left join 太神奇了
概念: 把left join左边的表的记录全部找出来.系统会先用表A和表B做个笛卡儿积,然后以表A为基表,去掉笛卡儿积中表A部分为NULL的记录.最后形成你的结果. 进行左连接时,就有涉及到主表.辅表 ...
- 【神乎其神】这些EXCEL技巧,太神奇了,赶紧收藏!
转:http://learning.sohu.com/20160215/n437421658.shtml
- ACM数论之旅11---浅谈指数与对数(长篇)(今天休息,不学太难的数论> 3<)
c/c++语言中,关于指数,对数的函数我也就知道那么多 exp(),pow(),sqrt(),log(),log10(), exp(x)就是计算e的x次方,sqrt(x)就是对x开根号 pow()函数 ...
- 页面渲染——页面合成(composition)的优化
合成(composition)意味着将网页中已经绘画好的部分结合在一起,且展示在屏幕上. 坚持使用transform和opacity属性来操作你的动画animation 在有动画的元素上使用 will ...
- ElementUI对话框(dialog)提取为子组件
需求:在页面的代码太多,想把弹窗代码提取为子组件,复用也方便. 这里涉及到弹窗el-dialog的一个属性show-close: show-close="false"是设置不显 ...
- python的for循环的神奇之处
python的for循环太神奇了: 你可以编写这样的语句: for i in range(10) : j= i**2 print(j) 你也可以编写这样的语句: with open('/path/to ...
- 静态集成腾讯TBS X5内核WebView,从微信提取新版30M浏览器内核打包进apk
目录 前情提要 第一步:下载老版本SDK得到jar 获取SDK 集成SDK 步骤二.下载提取最新TBS X5内核 方法1:从微信中提取 方法2:App内内访问tbs调试页安装新内核 步骤三.集成内核到 ...
随机推荐
- 通过例子分析MVVM
通过一个简单的计数器例子分析MVVM. 代码 demo2.html <!DOCTYPE html> <html lang="en"> <head> ...
- FileItem的部分方法解释
FileItem的部分方法: boolean isFormField() isFormField() 方法用来判断FileItem对象里面封装的数据是一个普通文本表单字段,还是一个文件表单字段.如果是 ...
- Mac SSH工具-Termius
全平台,功能强大 SSH连接.SFTP连接.端口转发.多设备同步 官方网站
- 微信小程序支付功能完整流程
支付流程 整个支付流程分为四个步骤: 获取令牌token 创建订单 预支付,获取支付参数对象pay 发起微信支付 收尾工作.跳转到订单页面,删除购物车中已购买的商品 请求方式:POST 整个支付过程中 ...
- 将mysql数据同步到ES6.4(全量+增量)
下载安装包时注意下载到指定文件夹 这里我放在OPT文件夹下一:安装logstash进入到opt文件夹打开终端 执行以下命令wget -c https://artifacts.elastic.co/do ...
- C++ primer plus读书笔记——第3章 处理数据
第3章 处理数据 1. C++对于变量名称的长度没有限制,ANSI C只保证名称中的前63个字符有意义(前63个字符相同的名称被认为是相同的,即使第64个字符不同). 2. 对类型名(int)使用si ...
- C++知识概要
static的用法和作用 在全局变量前加上关键字 static,全局变量就定义成一个全局静态变量.存储在静态存储区,在整个程序运行期间一直存在.同时全局静态变量在声明他的文件之外是不可见的 在局部变量 ...
- 3D饼/环Echarts图的实现
首先确保在项目中引入了echarts和echarts-gl"echarts": "^4.9.0","echarts-gl": "^ ...
- IEEE 网址
https://ieeexplore.ieee.org/document/506397
- 1.4linux文件和目录常用命令
文件和目录常用命令 目标 查看目录内容 ls 切换目录 cd 创建和删除操作 touch rm mkdir 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 echo 重定向 ...