我的编程空间,编程开发者的网络收藏夹
学习永远不晚

用Python将动态GIF图片倒放播放的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

用Python将动态GIF图片倒放播放的方法

这次让我们一个用 Python 做一个小工具:将动态 GIF 图片倒序播放!

查看图片

GIF(Graphics Interchange Format) 是一种可以用来呈现动画效果的图片格式,原理就是保存很多帧(Frame)静态图像,然后连续呈现。很多简短的视频也会被转换成动态 GIF 呈现,压缩画质和去除声音之后可以有效地减小文件大小。网络上不计其数的搞笑动图,几乎承载了网友大半的欢乐,但是也有人发现,将正常的动画倒序播放往往可以获得更搞笑的效果,Reddit 上甚至有一个专门的节点:/r/reversegif。

要做到这一点其实很简单,只要从原始图片中提取中间每一帧静态图像,然后将顺序颠倒之后重新生成一张 GIF 图片即可。Python 中专门用于处理图像的库是 PIL,在 PIL 基础上由 Alex Clark 等人开发了一个更友好的版本:Pillow。于是首先来安装(或升级)Pillow:


pip install --upgrade pillow -i http://pypi.douban.com/simple
python -c "import PIL; print(PIL.VERSION, 't', PIL.PILLOW_VERSION)"
// 1.1.7 3.4.2
利用 Pillow 可以先读取图片文件并判断该图片是否为动态图片及其帧数:
from PIL import Imagewith Image.open('ani.gif') as im:
print(im.is_animated, im.n_frames)

新版本的 Pillow 提供了更多写入 GIF 的功能:


im.save(out, save_all=True, append_images=[im1, im2, ...])

通过设定 save_all=True 参数和 append_images 可以一次性将多帧图像同时存入 GIF 图片,于是我们可以这样来生成倒序播放的图片:


from PIL import Image, ImageSequence
with Image.open('ani.gif') as im:
if im.is_animated:
frames = [f.copy() for f in ImageSequence.Iterator(im)]
frames.reverse() # 内置列表倒序方法
# 将倒序后的所有帧图像保存下来
frames[0].save('out.gif', save_all=True, append_images=frames[1:])

查看图片

再来看一个比较明显的效果:

查看图片

为了满足微信2M 图片大小限制,倒序图片经过了采样压缩处理

如果想要达到鬼畜一些的效果,还可以对所有帧随机打乱顺序:


import random
# frames.reverse()
random.shuffle(frames)

效果如下:

查看图片

以上所述是小编给大家介绍的用Python将动态GIF图片倒放播放的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

用Python将动态GIF图片倒放播放的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

用Python将动态GIF图片倒放播放的方法

这次让我们一个用 Python 做一个小工具:将动态 GIF 图片倒序播放!GIF(Graphics Interchange Format) 是一种可以用来呈现动画效果的图片格式,原理就是保存很多帧(Frame)静态图像,然后连续呈现。很多
2022-06-04

python批处理将图片进行放大的方法是什么

这篇文章主要讲解了“python批处理将图片进行放大的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python批处理将图片进行放大的方法是什么”吧!python批处理图片放大有时
2023-06-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录