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

 更新时间:2019年10月22日 10:06:51   作者:Python小老弟  
这篇文章主要介绍了Python拆分和合并GIF动态图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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

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

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

第三,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动态图成多个图形帧,以及合并多个图形帧成GIF动态图的过程。

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

相关文章

  • python读取图片并修改格式与大小的方法

    python读取图片并修改格式与大小的方法

    这篇文章主要为大家详细介绍了python读取图片并修改格式与大小的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • python数据化运营的重要意义

    python数据化运营的重要意义

    在本篇文章里小编给大家分享的是关于python数据化运营的重要意义,有兴趣的朋友们可以学习下。
    2019-11-11
  • Windows系统下pycharm中的pip换源

    Windows系统下pycharm中的pip换源

    这篇文章主要介绍了Windows系统下pycharm中的pip换源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • python实现蒙特卡罗方法教程

    python实现蒙特卡罗方法教程

    在本篇文章里小编给大家分享了关于python实现蒙特卡罗方法和知识点,有需要的朋友们学习下。
    2019-01-01
  • Scrapy将数据保存到Excel和MySQL中的方法实现

    Scrapy将数据保存到Excel和MySQL中的方法实现

    本文主要介绍了Scrapy将数据保存到Excel和MySQL中的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • selenium在执行phantomjs的API并获取执行结果的方法

    selenium在执行phantomjs的API并获取执行结果的方法

    今天小编就为大家分享一篇selenium在执行phantomjs的API并获取执行结果的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python的元组和字典知识点超详细讲解

    Python的元组和字典知识点超详细讲解

    这篇文章主要介绍了Python中元组和字典两种数据结构的基本用法,包括初始化、索引、拼接、剔除、重复、最大值和最小值、键值查询、获取对应值、剔除、更新、添加和计算数量等操作,需要的朋友可以参考下
    2025-01-01
  • 关于Python的GPU编程实例近邻表计算的讲解

    关于Python的GPU编程实例近邻表计算的讲解

    本文主要讲解了Python的GPU编程实例近邻表计算,通过一个近邻表计算的案例,给出了适用于GPU加速的计算场景。需要了解的朋友可以参考一下这篇文章
    2021-08-08
  • Python enumerate遍历数组示例应用

    Python enumerate遍历数组示例应用

    遍历数组的python代码
    2008-09-09
  • opencv+python实现图像矫正

    opencv+python实现图像矫正

    这篇文章主要为大家详细介绍了opencv+python实现图像矫正,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08

最新评论