阅读(764) (0)

Pillow 关于阅读图像的更多信息

2021-07-06 13:31:28 更新

如前所述,  ​Image ​模块的​open() ​功能用于打开图像文件。在大多数情况下,只需将文件名作为参数传递给它。​ Image.open()​ 可以用作上下文管理器:

from PIL import Image
with Image.open("hopper.ppm") as im:
    ...

如果一切顺利,结果是 ​PIL.Image.Image ​对象。否则, ​OSError ​引发异常。

您可以使用类似文件的对象,而不是文件名。对象必须实现 ​file.read ​, ​file.seek​ 和 ​file.tell ​方法,并以二进制模式打开。

从打开的文件读取

from PIL import Image
with open("hopper.ppm", "rb") as fp:
    im = Image.open(fp)

要从二进制数据中读取图像,请使用 ​BytesIO ​类:

从二进制数据读取

from PIL import Image
import io
im = Image.open(io.BytesIO(buffer))

请注意,在读取图像头之前,库会倒带文件(使用 ​seek(0) ​)。此外,当读取图像数据时(通过加载方法),也将使用SEEK。如果图像文件嵌入到较大的文件中,例如tar文件,则可以使用 ​ContainerIO ​或 ​TarIO ​访问它的模块。

从tar档案中读取

from PIL import Image, TarIO

fp = TarIO.TarIO("Tests/images/hopper.tar", "hopper.jpg")
im = Image.open(fp)