gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 30 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章用Python将动态GIF图片倒放播放的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

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

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

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

?
1
2
3
4
5
6
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 的功能:

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

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

?
1
2
3
4
5
6
7
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 :])

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

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

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

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

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

?
1
2
3
import random
# frames.reverse()
random.shuffle(frames)

效果如下:

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

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

最后此篇关于用Python将动态GIF图片倒放播放的方法的文章就讲到这里了,如果你想了解更多关于用Python将动态GIF图片倒放播放的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com