Python 实现分离GIF图片,-pillow

在这里插入图片描述

大家可以看到这个 gif图片 中的 美女,他是在动的 我们要做的就是将他所有的动作 全部都用图片记录下来。一帧一帧的保存下来。gif的本质就是将一帧一帧的图片 轮播。

代码还是很简单的


from PIL import Image
import os

gilFileName = 'meinv.gif'        # 将准备好的gif 打开
im = Image.open(gilFileName)
pngDir = gilFileName[:-4]        # 获取 .gif 前面的字符,也就是名字

if not os.path.exists(pngDir):
	'''如果没有重名的文件夹,就生成这个文件夹来存放图片'''
	os.mkdir(pngDir)         

try:      
	'''while True 的作用就是不停的遍历gif,取得每一个图片,如果图片访问结束 会报错,所以 try一下'''
    while True:     
        current = im.tell()       # 获取img对象的 帧图片
        im.save(pngDir + '\\' + str(current) + '.png')      # 保存
        im.seek(current + 1)     # seek的作用就相当于 装饰器的 next,代表下一个
			# current 代表帧图片,+1 就是下一张

except EOFError:
    pass

代码就是这么简单,看一下成果

在这里插入图片描述
流口水~
咳咳,回归正题。大家可以看到 图片的名字全都是 数字定义的,所以 current 代表了帧图片的 顺序 我们 在 while True里面 + 1了嘛。

我们 print 打印 current

在这里插入图片描述
当我们打开这类图像文件时,PIL 自动载入图像的第一帧。seek 和 tell 方法在各帧之间移动。底层封装很多东西的,不信自己去看源码。我这里不多说。

所以这里一定要用 seek 和 tell,别自己放入 数字。打肿充胖子

发布了91 篇原创文章 · 获赞 174 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_44685869/article/details/104865408
今日推荐