十行Python代码制作一个视频倒放神器
作者:嗨!栗子同学 发布时间:2022-02-03 13:40:15
标签:Python,视频,倒放
导语
大家好,我是栗子同学!
今天给大家分享一个好玩的东西
让时光倒流——当当当,其实就是让视频倒放而已
正常的视频如下
倒放视频如下
效果很赞吧,等你学会了这个,你才会发现,抖音上那些杯子里的水倒流,倒着跑步等看似很炫酷很神秘的视频,其实就是一键倒放而已!
那么,今天小编就来探索Python代码如何实现这个倒放的功能叭~
这些搞笑的gif跟小视频都是将正常的流畅通过倒放产生的效果啦
其实制作起来却非常简单,原理就是将gif图片拆分出来每一帧,再将拆分的每一帧图片反向排序保存到gif里即可,只需要十行代码
源码如下
from PIL import Image, ImageSequence
# 读取 GIF
im = Image.open("1.gif")
# GIF 图片流的迭代器
iter = ImageSequence.Iterator(im)
index = 1
# 遍历图片流的每一帧
for frame in iter:
print("image %d: mode %s, size %s" % (index, frame.mode, frame.size))
frame.save("./images/img%d.png" % index)
index += 1
# 把 GIF 拆分为图片流
imgs = [frame.copy() for frame in ImageSequence.Iterator(im)]
# 图片流反序
imgs.reverse()
# 将反序后的所有帧图像保存下来
imgs[0].save("reverse.gif", save_all=True, append_images=imgs[1:])
效果展示
哈哈哈,看懂这个视频了嘛!!
当遇到老人的时候应该.......
完整的一组效果
少年触电,勇士及时救援!
去吧!皮卡丘
# python下的图像处理库
from PIL import Image, ImageSequence
# 系统模块
import os
# 用于读取gif动图
im = Image.open("读取图片的名称")
# gif图片流的迭代器
iter = ImageSequence.Iterator(im)
index = 1
for frame in iter:
# 每一帧图片
print("image %d: mode %s, size %s" % (index, frame.mode, frame.size))
# 若保存的路径不存在,则创建文件夹
path = "imgs"
if path not in os.listdir():
os.makedirs(path)
# 将每一帧图片保存到imgs文件夹下
frame.save("./imgs/frame%d.png" % index)
index += 1
# 将gif拆分成图片流
imgs = [frame.copy() for frame in ImageSequence.Iterator(im)]
# 输出原图
# imgs[0].save("./out.gif", save_all=True, append_images=imgs[1:])
# 将图片流反序
imgs.reverse()
# 将反序后的图片流保存并输出
imgs[0].save("./reverse_out.gif", save_all=True, append_images=imgs[1:])
来源:https://blog.csdn.net/xy258009/article/details/122884012
0
投稿
猜你喜欢
- Oracle关系型数据库管理系统是世界上流行的关系数据库,它是一个极其强大、灵活和复杂的系统,据说,在使用oracle时应有这样的思想,那就
- HTTP-REFERER这个变量已经越来越不可靠了,完全就是可以伪造出来的东东。 以下是伪造方法:ASP/Visual Basic代码 di
- kelon 问:格式如下:s="地,在要,大,奇功,不知,但是,不示"我想把它split分出來,变成数组來循环,但是不知
- 导语:哈喽,哈喽~今天小编又来分享小游戏了——flappy bird(飞扬的小鸟),这个游戏非常的经
- 最早大家都没有给链接加title的习惯,后来因为w3c标准普及,又集体加上了title。从一个极端走到另个极端,于是出现很多怪异现象。两方面
- aspImage是ServerObjects站点上非常好的一个组件,它可以使我们利用Asp实现很多对于图形的处理功能,他的功能强大,如果你需
- 本文实例讲述了python开发之基于thread线程搜索本地文件的方法。分享给大家供大家参考,具体如下:先来看看运行效果图:利用多个线程处理
- 总结了5个关于css布局的常见问题,并附有解决方法,供参考。float的3像素问题及解决办法当使用float浮动容器后,在IE6下会产生3p
- 前言Python是C语言实现的,因此Python对象在C语言层面应该是一个结构体 ,组织对象占用的内存。 不同类型的对象,数据及行为均可能不
- 代码如下:--相信大家肯定经常会把数据导入到数据库中,但是可能会有些记录行的所有列的数据是null,这为null的数据是我们不需要 --现在
- 如何用ASP来识别操作系统是vista的?我在网上找了个函数,但是不能判断是vista系统,希望大家帮忙. 这个是我在网上找的函数: Fun
- 在一些情况下,MySQL可以直接使用索引来满足一个 ORDER BY 或 GROUP BY 子句而无需做额外的排序。尽管 ORDER BY
- 随着网络的普及,基于网络的应用也越来越多。网络数据库就是其中之一。通过一台或几台服务器可以为很多客户提供服务,这种方式给人们带来了很多方便,
- 本文实例讲述了php生成curl命令行的方法。分享给大家供大家参考,具体如下:示例:curl "http://localhost/
- 正题: 1.1 javascript的灵活性 面向对象对象的Javascript编程模式:1、可以保存状态 2、具有对象内部才能调用的方法
- 一、Python图像处理PIL库1.1 转换图像格式# PIL(Python Imaging Library)from PIL import
- 学习自然语言的最好方法就是溶入相应的语言环境在交流中学习,学习一种编程语言的最好方法就是看例程。为了帮助大家建立wml应用的第一印象,所以请
- [概 要] 这篇文章讨论常用的"sql注入"技术的细节,应用于流行的Ms IIS/ASP/SQL-Server平台。这里
- CSS执行顺序与优先权的问题其实就是一个冲突解决的问题,当同一个元素(或内容)被CSS选择符选中时,就要按照优先权取舍不同的CSS规则,这其
- <?php/** * HOST: www.icbase.com *///set_time_limit(0);//