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

作者:Python小老弟 时间:2021-09-09 18:05:57 

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

下面以最简单的代码形式(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动态图的过程。

来源:https://www.cnblogs.com/qingdeng123/p/11715257.html

标签:python,拆分,合并,gif,动态,图
0
投稿

猜你喜欢

  • Dreamweaver快捷键大全

    2007-11-05 14:08:00
  • TXT.WORD文档下载另存为,而不是在浏览器中打开

    2007-10-25 11:43:00
  • PHP取余函数介绍MOD(x,y)与x%y

    2023-10-02 20:15:55
  • Python+matplotlib+numpy实现在不同平面的二维条形图

    2023-11-11 21:01:58
  • ASP利用XMLHTTP实现表单提交以及cookies的发送的代码

    2011-04-15 10:37:00
  • python实现拓扑排序的基本教程

    2021-03-24 04:24:02
  • 基于Python脚本实现邮件报警功能

    2023-02-04 17:16:41
  • 在DOS界面如何运行python的py文件

    2022-05-01 16:39:33
  • python自动查询12306余票并发送邮箱提醒脚本

    2023-08-26 09:34:37
  • 在python 不同时区之间的差值与转换方法

    2023-10-15 12:20:57
  • Python实现的检测网站挂马程序

    2023-11-21 16:39:38
  • python+opencv打开摄像头,保存视频、拍照功能的实现方法

    2021-06-12 15:16:02
  • Python字符串的创建和驻留机制详解

    2022-07-07 18:49:17
  • 字符,字节和编码

    2009-12-09 15:59:00
  • Python图像运算之图像掩膜直方图和HS直方图详解

    2023-03-01 03:01:45
  • python matplotlib绘画十一种常见数据分析图

    2022-09-02 04:50:41
  • XML教程:什么是XML及XML和HTML的区别

    2008-09-05 17:21:00
  • Python实现Excel自动分组合并单元格

    2021-11-06 03:03:41
  • 关于H1的用法探讨

    2008-03-18 12:55:00
  • python的语句结构你真的了解吗

    2022-08-11 23:05:39
  • asp之家 网络编程 m.aspxhome.com