基于Python实现拆分和合并GIF动态图


Posted in Python onOctober 22, 2019

“表情包”是当前社交软件上不可或缺的交流方式,难以用文字表达的意思,发一个“表情包”,对方就能心领神会。下面是小派制作的一个表情包,准确地讲,是在已有表情包的基础上,二次加工而成的。

下面以最简单的代码形式(10行左右),介绍上述“表情包”的制作过程。第一,将GIF动态图拆分成图形帧。下图是网络上找到的一个GIF格式动态图。

基于Python实现拆分和合并GIF动态图

利用Python将上述GIF格式动态图拆分图形帧,只需要输入以下代码。其中第1-2行是导入os库、从PIL库中导入Image函数功能。第3行是Image.open打开位于D盘路径下名为“first.gif”的动态图。第4行是建立名为“图形拆分”的文件夹,用于保存拆分后的图形帧。第5-12是利用try-except异常处理和while循环查找、保存图形帧到“图形拆分”文件夹中。第12行是打印共计拆分出多少图形帧。这个Python拆分GIF动态图的代码也就13行,相对其他方法是非常简单的。

import os
from PIL import Image
im = Image.open('D:\\Python\\gif\\first.gif')
os.mkdir('图形拆分')
try:
  i = 0
  while True:
    im.seek(i)
    im.save('图形拆分/'+str(i)+'.png')
    i = i +1
except:
  pass
print('共拆解图像帧数'+str(i))

运行上述代码,便将名为“first.gif”的动态图拆分成如下36帧图形。

基于Python实现拆分和合并GIF动态图

第二,对拆分后的图形进行二次加工。比如打上自己喜欢的“台词”,这里把“出来浪啦”4个字打到上述拆分后的图形上,可以使用Photoshop等图形处理工具。如果使用Photoshop的话,因为拆分后的图形为png格式,直接打开会显示“索引”状态,此时可以通过“图像”-->“模式”-->“RGB颜色”将png变成图层,然后通过“移动”-->“顶部对齐/右边对齐”将多帧图形图层叠加对齐,然后再打上“台词”并逐个保存成png,如下图。当然不使用Photoshop,使用其他软件添加文字也行。这里将二次加工后的图形保存在“图形合并”文件夹中,方便第三步操作。

基于Python实现拆分和合并GIF动态图

第三,Python将第二步中的图形帧合并成GIF动态图。输入如下代码即可:第1行是导入imageio,os模块,第2行建立一个名为images的空文件,用于保存多帧图形。第3行os.listdir()列表化返回“图形合并”文件夹中所有图形名。第4-5行for-in循环读取列表化的图形名。第6行imageio.mimsave()生成GIF格式动态图,duration=0.1表示每帧图形间隔0.1秒。这个Python合并GIF动态图的代码更加简单,才6行。

import imageio, os
images = []
numberlist = os.listdir('图形合并')
for i in range(len(numberlist)):
  images.append(imageio.imread('图形合并/'+numberlist[i]))
imageio.mimsave('newfirst.gif',images,'GIF',duration=

保存和运行上述代码,便得到了Python制作的表情包“出来浪啦”。

基于Python实现拆分和合并GIF动态图

当然现在有很多制作“表情包”的软件,不需要这么复杂。但这里主要是感受Python拆分GIF动态图成多个图形帧,以及合并多个图形帧成GIF动态图的过程。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django 2.0版本的新特性抢先看!
Jan 05 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 Python
Python笔记之工厂模式
Nov 20 Python
python模式 工厂模式原理及实例详解
Feb 11 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
Apr 22 Python
python异常处理之try finally不报错的原因
May 18 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
May 27 Python
python3中编码获取网页的实例方法
Nov 16 Python
浅析Python的命名空间与作用域
Nov 25 Python
python使用matplotlib绘制图片时x轴的刻度处理
Aug 30 Python
python  logging日志打印过程解析
Oct 22 #Python
安装2019Pycharm最新版本的教程详解
Oct 22 #Python
Python列表list常用内建函数实例小结
Oct 22 #Python
Python爬虫使用浏览器cookies:browsercookie过程解析
Oct 22 #Python
Python异常模块traceback用法实例分析
Oct 22 #Python
Python多线程爬取豆瓣影评API接口
Oct 22 #Python
Python Process多进程实现过程
Oct 22 #Python
You might like
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
用JAVASCRIPT如何给<textarea></textarea>赋值
2007/04/20 Javascript
40款非常有用的 jQuery 插件推荐(系列一)
2011/12/21 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
JavaScript闭包函数访问外部变量的方法
2014/08/27 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
2015/03/26 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
基于python socketserver框架全面解析
2017/09/21 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
举例说明类变量和实例变量的区别
2016/06/30 面试题
大学生新闻专业个人自我评价
2013/11/12 职场文书
餐饮加盟计划书
2014/01/10 职场文书
旅游网创业计划书
2014/01/31 职场文书
副厂长岗位职责
2014/02/02 职场文书
防汛工作情况汇报
2014/10/28 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
深入探讨opencv图像矫正算法实战
2021/05/21 Python
Python基础 括号()[]{}的详解
2021/11/07 Python
python 中的jieba分词库
2021/11/23 Python
postgresql中如何执行sql文件
2023/05/08 PostgreSQL