太神奇了!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调试页安装新内核 步骤三.集成内核到 ...
随机推荐
- Ubuntu Linux 学习篇 配置DNS服务器
BIND9 DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器.DNS中保存了一张域名(doma ...
- 【CSS】CSS3从入门到深入(复习查漏向
CSS3从入门到深入(复习查漏向 pre_section CSS:层叠样式表,决定网页表现 网页为多层结构,CSS为每一层设置样式,最后显示最上一层 CSS语句 = 选择器 + 声明块 形式 内联样式 ...
- 【前端】使用layui、layer父子frame传值
前提: 半前后台分离,前后台都是使用JSON格式的数据进行交互.[化外音,这里我说半分离,是因为使用了themleaf模板进行路由.] 业务说明: 前端通用的逻辑是:列表展示数据,点击事件弹出fram ...
- layui图片上传
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>up ...
- 【opencv】Java实现opencv 调用本地摄像头,实现人脸识别、人形识别、人眼识别
本博客为老魏原创,如需转载请留言咨询. 效果预览:(没办法,为了效果只能上像了,丑别介意.哈哈..) 上代码: 1 package com.lw.test; 2 3 import java.awt.G ...
- Etcd中Raft日志复制的实现
Raft state of log commitIndex : A log entry is committed once the leader that created the entry has ...
- Java并发编程(二)如何保证线程同时/交替执行
第一篇文章中,我用如何保证线程顺序执行的例子作为Java并发系列的开胃菜.本篇我们依然不会有源码分析,而是用另外两个多线程的例子来引出Java.util.concurrent中的几个并发工具的用法. ...
- Charles的证书下载(web)
1.charles的证书下载(web) 1.为什么下载charles的ssl证书? 默认情况下,charles不能解析https协议的接口,里面的请求和响应数据都是乱码格式,所以我们需要下载ssl证书 ...
- c#操作可道云api帮助类
代码: public class KodCloudHelper { static readonly string kodCloudUrl = Configs.GetString("KodCl ...
- 不想用teamviewer和向日葵远程 试试frp吧
前言 最近发现teamview越来越不稳定了,总连接不上,对向日葵也是无感,倒不是说这两个产品不好,毕竟也是陪伴过我很长一段时间的软件了,于是上网找寻到了一个反向代理神器--FRP 介绍 frp是一个 ...