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[來源]

基礎: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[來源]

增量影像剖析器。此類別實作標準的 feed/close 消費者介面。

close() Image[來源]

(消費者) 關閉串流。

傳回:

一個影像物件。

引發:

OSError – 如果剖析器未能剖析影像檔案,原因可能是無法識別或無法解碼。

feed(data: bytes) None[來源]

(消費者) 將資料饋送到剖析器。

參數:

data – 字串緩衝區。

引發:

OSError – 如果剖析器未能剖析影像檔案。

reset() None[原始碼]

(消費者)重設解析器。請注意,您只能在建立解析器後立即呼叫此方法;解析器實例無法重複使用。

class PIL.ImageFile.PyCodec[原始碼]
cleanup() None[原始碼]

覆寫以執行編解碼器特定的清理動作

傳回:

init(args: tuple[Any, ...]) None[原始碼]

覆寫以執行編解碼器特定的初始化

參數:

args – 來自圖塊條目的參數項目的元組

傳回:

setfd(fd: IO[bytes]) None[原始碼]

從 ImageFile 呼叫以設定 Python 檔案類物件

參數:

fd – Python 檔案類物件

傳回:

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

從 ImageFile 呼叫以設定編解碼器的核心輸出影像

參數:
  • im – 核心影像物件

  • extents – 定義此圖塊矩形的 4 元組 (x0, y0, x1, y1)

傳回:

class PIL.ImageFile.PyDecoder[原始碼]

基底類別:PyCodec

格式解碼器的 Python 實作。覆寫此類別,並在 decode() 方法中新增解碼邏輯。

請參閱 在 Python 中撰寫您自己的檔案編解碼器

decode(buffer: bytes | SupportsArrayInterface) tuple[int, int][原始碼]

覆寫以執行解碼程序。

參數:

buffer – 包含要解碼資料的 bytes 物件。

傳回:

(消耗的位元組數, 錯誤碼) 的元組。如果解碼完成,則傳回 -1 作為消耗的位元組數。錯誤碼來自 ImageFile.ERRORS

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

從原始資料流設定內部影像的方便方法

參數:
  • data – 要設定的位元組

  • rawmode – 要用於解碼器的 rawmode。如果未指定,則預設為影像的模式

  • extra – 解碼器的額外引數。

傳回:

class PIL.ImageFile.PyEncoder[原始碼]

基底類別:PyCodec

格式編碼器的 Python 實作。覆寫此類別,並在 encode() 方法中新增解碼邏輯。

請參閱 在 Python 中撰寫您自己的檔案編解碼器

encode(bufsize: int) tuple[int, int, bytes][原始碼]

覆寫以執行編碼程序。

參數:

bufsize – 緩衝區大小。

傳回:

(編碼的位元組數, 錯誤碼, 位元組) 的元組。如果編碼完成,則傳回 1 作為錯誤碼。錯誤碼來自 ImageFile.ERRORS

encode_to_file(fh: int, bufsize: int) int[原始碼]
參數:
  • fh – 檔案控制代碼。

  • bufsize – 緩衝區大小。

傳回:

如果成功完成,則返回 0。否則,返回一個錯誤代碼。錯誤代碼來自 ImageFile.ERRORS

encode_to_pyfd() tuple[int, int][原始碼]

如果 pushes_fdTrue,則會使用此方法,並且只會調用一次 encode()

傳回:

一個 (消耗的位元組數, 錯誤碼) 的元組。錯誤代碼來自 ImageFile.ERRORS

class PIL.ImageFile.ImageFile[原始碼]

繼承自: Image

影像檔案格式處理常式的基底類別。

tile: list[_Tile]

圖塊描述符的列表,或 None

get_format_mimetype() str | None[原始碼]
verify() None[原始碼]

檢查檔案完整性

load() Image.core.PixelAccess | None[原始碼]

根據圖塊列表載入影像資料

load_prepare() None[原始碼]
load_end() None[原始碼]
class PIL.ImageFile.StubHandler[原始碼]

繼承自: object

class PIL.ImageFile.StubImageFile[原始碼]

繼承自: ImageFile

虛擬影像載入器的基底類別。

虛擬載入器是一種可以識別特定格式的檔案,但依賴外部程式碼來載入檔案的影像載入器。

load() Image.core.PixelAccess | None[原始碼]

根據圖塊列表載入影像資料

常數

PIL.ImageFile.LOAD_TRUNCATED_IMAGES = False

是否載入截斷的影像檔案。使用者程式碼可以更改此設定。

PIL.ImageFile.ERRORS

PyDecoder.decode()PyEncoder.encode()PyEncoder.encode_to_pyfd()PyEncoder.encode_to_file() 返回的已知錯誤代碼字典。