时间:2021-05-22
这次让我们一个用 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/simplepython -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, ImageSequencewith 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图片倒放播放的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
剪映是能导入动图的,即GIF,它就属于动态图片。制作GIF图片动态的方法:在拍摄短视频过后,使用手机导入电脑后,再用格式工厂将录制的视频转换成GIF格式的图片即
今天小编无意间发现百度浏览器的截图功能有一个神奇的用法,那就是使用截取GIF动态图片的方法,制作GIF动态图片,让你再也不用担心那些看似高深莫测的GIF动态图片
WPS版本PPT怎么加GIF动画都不动,我用的是WPS的答:GIF动画可直接用插入图片的方法加入,加入后需在播放幻灯片时才会动,该怎么办呢?下面分享解决办法一.
本文实例讲述了PHP判断一个gif图片是否为动态图片的方法。分享给大家供大家参考。具体方法如下:如何使用PHP来判断一个gif图片是否为动态图片(动画)?
在播放幻灯片时,有时为了方便查错,或给人快捷展示,将文件导出为动态图片将会非常合适,该怎么将文件保存为gif格式呢?消磨我们就来看看详细的教程。软件名称:off