Python Pillow – 图像序列

Python Pillow – 图像序列

Pillow中的ImageSequence模块包含一个封装类,帮助用户迭代图像序列的帧。它可以迭代动画、gif等。

Iterator class

该类接受一个图像对象作为参数。它实现了一个迭代器对象,用户可以用它来遍历一个图像序列。[ ] 操作符可以用来通过索引访问元素,如果用户试图访问一个不存在的索引,就会引发一个IndexError。

语法:

语法: class PIL.ImageSequence.Iterator(image_object)

首先,应该导入Image和ImageSequence模块,因为我们将使用Image.open()来打开图像或动画文件,在第二个例子中,我们将使用Image.show()来显示一个图像。然后在ImageSequence.Iterator(image_object)方法的帮助下,我们可以对帧进行迭代,也可以提取图像序列中存在的所有帧并将其保存在一个文件中。

我们将使用这个Gif进行演示:

Python Pillow - 图像序列

以下是实现情况:

# importing the ImageSequence module:
from PIL import Image, ImageSequence
 
# Opening the input gif:
im = Image.open("animation.gif")
 
# create an index variable:
i = 1
 
# iterate over the frames of the gif:
for fr in ImageSequence.Iterator(im):
    fr.save("frame%d.png"%i)
    i = i + 1

输出:

该动画(gif文件)总共有36个帧。而输出的结果将是.png模式。

Python Pillow - 图像序列

IndexError的例子

在这个例子中,我们将使用本文之前使用的程序的一个小修改版本。我们看到上面的动画一共有36个帧,索引从0到35。当我们试图访问第36帧时,会显示IndexError。

进入最后一帧:

# importing the ImageSequence module:
from PIL import Image, ImageSequence
 
# Opening the input gif:
im = Image.open("animation.gif")
 
# create an index variable:
i =1
 
# create an empty list to store the frames:
app = []
 
# iterate over the frames of the gif:
for fr in ImageSequence.Iterator(im):
    app.append(fr)
    fr.save("frame%d.png"%i)
    i = i + 1
 
# print the length of the list of frames.
print(len(app))
 
app[35].show()

输出:

Python Pillow - 图像序列

访问不存在的帧:

# importing the ImageSequence module:
from PIL import Image, ImageSequence
 
# Opening the input gif:
im = Image.open("animation.gif")
 
# create an index variable:
i =1
 
# create an empty list to store the frames:
app = []
 
# iterate over the frames of the gif:
for fr in ImageSequence.Iterator(im):
    app.append(fr)
    fr.save("frame%d.png"%i)
    i = i + 1
 
# print the length of the list of frames.
print(len(app))
 
# nonexistent frame it will show
# IndexError
app[36].show()

输出:

IndexError: list index out of range

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python pil