ImageFile 模块

ImageFile 模块为图像打开和保存功能提供支持函数。

此外,它还提供了一个 Parser 类,可用于逐段解码图像(例如,在通过网络连接接收图像时)。此类实现了与标准 sgmllibxmllib 模块相同的使用者接口。

示例:解析图像

from PIL import ImageFile

fp = open("hopper.pgm", "rb")

p = ImageFile.Parser()

while 1:
    s = fp.read(1024)
    if not s:
        break
    p.feed(s)

im = p.close()

im.save("copy.jpg")

class PIL.ImageFile._Tile[source]

基类:NamedTuple

_Tile(codec_name, extents, offset, args)

codec_name: str

字段编号 0 的别名

extents: tuple[int, int, int, int] | None

字段编号 1 的别名

offset: int

字段编号 2 的别名

args: tuple[Any, ...] | str | None

字段编号 3 的别名

class PIL.ImageFile.Parser[source]

增量图像解析器。此类实现了标准 feed/close 使用者接口。

close() Image[source]

(使用者) 关闭流。

返回值:

一个图像对象。

引发:

OSError – 如果解析器无法解析图像文件,因为无法识别或无法解码。

feed(data: bytes) None[source]

(使用者) 向解析器提供数据。

参数:

data – 字符串缓冲区。

引发:

OSError – 如果解析器无法解析图像文件。

reset() None[source]

(使用者) 重置解析器。请注意,您只能在创建解析器后立即调用此方法;解析器实例无法重复使用。

class PIL.ImageFile.PyCodec[source]
cleanup() None[source]

覆盖以执行特定于编解码器的清理

返回值:

init(args: tuple[Any, ...]) None[source]

覆盖以执行特定于编解码器的初始化

参数:

args – 从图块条目中获取的 arg 项目元组

返回值:

setfd(fd: IO[bytes]) None[source]

从 ImageFile 调用以设置 Python 类文件对象

参数:

fd – Python 类文件对象

返回值:

setimage(im: Image.core.ImagingCore, extents: tuple[int, int, int, int] | None = None) None[source]

从 ImageFile 调用以设置编解码器的核心输出图像

参数:
  • im – 核心图像对象

  • extents – 一个 4 元组,包含 (x0, y0, x1, y1),定义了该图块的矩形

返回值:

class PIL.ImageFile.PyDecoder[source]

Bases: PyCodec

格式解码器的 Python 实现。重写此类并在 decode() 方法中添加解码逻辑。

参见 在 Python 中编写自己的文件编解码器

decode(buffer: bytes | SupportsArrayInterface) tuple[int, int][source]

重写以执行解码过程。

参数:

buffer – 包含要解码的数据的字节对象。

返回值:

一个 (bytes consumed, errcode) 元组。如果解码完成,则返回 -1 表示已消耗的字节。错误代码来自 ImageFile.ERRORS

set_as_raw(data: bytes, rawmode: str | None = None, extra: tuple[Any, ...] = ()) None[source]

将内部图像从原始数据流中设置的便捷方法

参数:
  • data – 要设置的字节

  • rawmode – 要用于解码器的 rawmode。如果未指定,它将默认为图像的模式

  • extra – 解码器的额外参数。

返回值:

class PIL.ImageFile.PyEncoder[source]

Bases: PyCodec

格式编码器的 Python 实现。重写此类并在 encode() 方法中添加解码逻辑。

参见 在 Python 中编写自己的文件编解码器

encode(bufsize: int) tuple[int, int, bytes][source]

重写以执行编码过程。

参数:

bufsize – 缓冲区大小。

返回值:

一个 (bytes encoded, errcode, bytes) 元组。如果编码完成,则返回 1 表示错误代码。错误代码来自 ImageFile.ERRORS

encode_to_file(fh: int, bufsize: int) int[source]
参数:
  • fh – 文件句柄。

  • bufsize – 缓冲区大小。

返回值:

如果成功完成,则返回 0。否则,返回错误代码。错误代码来自 ImageFile.ERRORS

encode_to_pyfd() tuple[int, int][source]

如果 pushes_fdTrue,则将使用此方法,并且 encode() 将只调用一次。

返回值:

一个包含 (bytes consumed, errcode) 的元组。错误代码来自 ImageFile.ERRORS

class PIL.ImageFile.ImageFile[source]

基类:Image

图像文件格式处理程序的基类。

tile: list[_Tile]

一个瓦片描述符列表,或者 None

get_format_mimetype() str | None[source]
verify() None[source]

检查文件完整性

load() Image.core.PixelAccess | None[source]

根据瓦片列表加载图像数据

load_prepare() None[source]
load_end() None[source]
class PIL.ImageFile.StubHandler[source]

基类:object

class PIL.ImageFile.StubImageFile[source]

基类:ImageFile

存根图像加载程序的基类。

存根加载程序是一种可以识别特定格式文件的图像加载程序,但依赖外部代码来加载文件。

load() Image.core.PixelAccess | None[source]

根据瓦片列表加载图像数据

常量

PIL.ImageFile.LOAD_TRUNCATED_IMAGES = False

是否加载截断的图像文件。用户代码可以更改此设置。

PIL.ImageFile.ERRORS

PyDecoder.decode()PyEncoder.encode() PyEncoder.encode_to_pyfd()PyEncoder.encode_to_file() 返回的已知错误代码字典。