首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >几行Python代码实现动图倒放,太好玩

几行Python代码实现动图倒放,太好玩

作者头像
Python研究者
发布2022-04-08 10:44:14
发布2022-04-08 10:44:14
48700
代码可运行
举报
文章被收录于专栏:Python研究者Python研究者
运行总次数:0
代码可运行

大家好,我是辰哥~

开始分享今天的技术之前,先来看几个动图(gif)

(原图1)

(倒放1)


(原图2)

(倒放2)

上诉两个动图,可以通过几行Python代码就可以实现倒放效果。

导入库

代码语言:javascript
代码运行次数:0
运行
复制
from PIL import Image, ImageSequence

Image库用于读取(加载)图片

ImageSequence 用于将GIF拆解为图片(一帧一图)

代码语言:javascript
代码运行次数:0
运行
复制
# 加载本地动图
image = Image.open("cg.gif")
# GIF 动图拆分器
list = ImageSequence.Iterator(image)

拆分动图

代码语言:javascript
代码运行次数:0
运行
复制
imgs = []
# 拆分后的图片进行编号,从1开始
k = 1
# 遍历图片流的每一帧
for frame in list:
    # 拆分后的图片,保存到chenge文件夹下,图片命名为img_1.png、img_2.png、...
    frame.save("./chenge/img_%d.png" % k)
    imgs.append(frame.copy())
    k += 1

将拆解后的帧图进行反转(倒序排列),并保存成新的动图reverse_cg.gif

代码语言:javascript
代码运行次数:0
运行
复制
# 拆分图片流进行反序
imgs.reverse()
# 将反序后所有帧图保存下来,命名为reverse_cg.gif
imgs[0].save("reverse_cg.gif", save_all=True, append_images=imgs[1:])

最后生成结果

完整源码

代码语言:javascript
代码运行次数:0
运行
复制
from PIL import Image, ImageSequence
# 加载本地动图
image = Image.open("cg.gif")
# GIF 动图拆分器
list = ImageSequence.Iterator(image)

imgs = []
# 拆分后的图片进行编号,从1开始
k = 1
# 遍历图片流的每一帧
for frame in list:
    # 拆分后的图片,保存到chenge文件夹下,图片命名为img_1.png、img_2.png、...
    frame.save("./chenge/img_%d.png" % k)
    imgs.append(frame.copy())
    k += 1

# 拆分图片流进行反序
imgs.reverse()
# 将反序后所有帧图保存下来,命名为reverse_cg.gif
imgs[0].save("reverse_cg.gif", save_all=True, append_images=imgs[1:])

以上就是本文的动图倒放技术过程

原理:读取动图,将动图进行拆分(一帧一图),将拆分后的动图进行反转(实现倒放的关键),然后反转后的图片保存新动图(gif)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python研究者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档