Pillow 关于阅读图像的更多信息
如前所述, 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)