社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

未闻Code • 3 年前 • 494 次点击  


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


(原图1)


(倒放1)




(原图2)


(倒放2)


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


导入库

from PIL import Image, ImageSequence


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

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

# 加载本地动图
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


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

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


最后生成结果




完整源码

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)。

END

未闻 Code·知识星球开放啦!

一对一答疑爬虫相关问题

职业生涯咨询

面试经验分享

每周直播分享

......

未闻 Code·知识星球期待与你相见~

一二线大厂在职员工

十多年码龄的编程老鸟

国内外高校在读学生

中小学刚刚入门的新人

“未闻 Code技术交流群”等你来!

入群方式:添加微信“mekingname”,备注“粉丝群”(谢绝广告党,非诚勿扰!)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129525
 
494 次点击