Python图像处理之pillow-GIF图

本文介绍了如何使用Python的pyglet库来显示和播放GIF图像,包括指定文件路径、创建Sprite以及实现GIF倒序播放的方法。通过示例代码展示了播放动态图的过程,并探讨了将图像序列随机打乱的效果。

如何使用Python显示并播放GIF图呢?

上原图(一个在微信表情界泛滥的表情):

上代码:

 

# _*_ coding:utf-8 _*_

import pyglet
__author__ = 'admin'

'''
    python显示GIF图
'''

#   如果需要展示的GIF图未在工作目录下,这里需要先指明目标文件夹
pyglet.resource.path = [r'C:\Users\admin\Desktop']
#   animation中需要填入的是目标文件的文件名
animation = pyglet.resource.animation('scream.gif')
#   获取GIF图的实例
sprite = pyglet.sprite.Sprite(animation)
#   设定窗口的大小
win = pyglet.window.Window(width=sprite.width, height=sprite.height)

@win.event
def on_draw():
    win.clear()
    sprite.draw()

pyglet.app.run()


效果截图:

需要注意的是:

①如果目标文件不在你的工作目录下,这是后你需要先指明目标文件的文件夹:

 

pyglet.resource.path = [r'C:\Users\admin\Desktop']

    而animation方法中需要加入的是目标文件的文件名

 

animation = pyglet.resource.animation('scream.gif')

②Sprite(not雪碧的意思!)解释如下:

sprite是屏幕上显示的图像的一个实例。多个sprite可以在屏幕上的不同位置显示相同的图像。sprite也可以放大或缩小,以任意角度旋转,并以不透明度进行绘制。通常是先加载一个动态图,再为该图创建一个sprite,然后在窗口的绘制事件处理程序中绘制sprite。

补充一点就是pyglet的安装:pip install pyglet

如何实现GIF的倒序播放呢?

上原图:

上代码:

 

#   _*_ coding:utf-8 _*_

from PIL import Image, ImageSequence

__author__ = 'admin'

im = Image.open(r'C:\Users\admin\Desktop\action.gif')
#   初始化列表
sequence = []
for f in ImageSequence.Iterator(im):
    #   获取图像序列病存储
    sequence.append(f.copy())
#   将图像序列逆转
sequence.reverse()
sequence[0].save(r'C:\Users\admin\Desktop\out.gif', save_all=True, append_images=sequence[1:])

效果图:



那么我们在获取到图像序列后,并将其随机打乱会产生什么化学反应呢?

 

 

#   _*_ coding:utf-8 _*_
import random
from PIL import Image, ImageSequence

__author__ = 'admin'

im = Image.open(r'C:\Users\admin\Desktop\action.gif')
#   初始化列表
sequence = []
for f in ImageSequence.Iterator(im):
    #   获取图像序列病存储
    sequence.append(f.copy())
#   随机打乱图像序列
random.shuffle(sequence)
#   将图像序列逆转
# sequence.reverse()
sequence[0].save(r'C:\Users\admin\Desktop\out.gif', save_all=True, append_images=sequence[1:])

 

效果图:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值