ImageWin 模組 (僅限 Windows)

ImageWin 模組包含在 Windows 上建立和顯示影像的支援。

ImageWin 可以與 PythonWin 和其他提供 Windows 裝置內容或視窗控制代碼存取的使用者介面工具組一起使用。例如,Tkinter 透過 winfo_id 方法提供視窗控制代碼

from PIL import ImageWin

dib = ImageWin.Dib(...)

hwnd = ImageWin.HWND(widget.winfo_id())
dib.draw(hwnd, xy)
class PIL.ImageWin.Dib(image: Image | str, size: tuple[int, int] | None = None)[原始碼]

具有給定模式和大小的 Windows 點陣圖。模式可以是 “1”、“L”、“P” 或 “RGB” 之一。

如果顯示器需要調色盤,此建構子會建立合適的調色盤並將其與影像關聯。對於 “L” 影像,會配置 128 個灰階。對於 “RGB” 影像,會使用 6x6x6 色彩立方體,以及 20 個灰階。

為了確保調色盤在 Windows 下正常運作,您必須在 Windows 的某些事件上呼叫 palette 方法。

參數:
  • image – PIL 影像或模式字串。如果使用模式字串,則也必須給定大小。模式可以是 “1”、“L”、“P” 或 “RGB” 之一。

  • size – 如果第一個參數是模式字串,則這會定義影像的大小。

draw(handle: int | HDC | HWND, dst: tuple[int, int, int, int], src: tuple[int, int, int, int] | None = None) None[原始碼]

與 expose 相同,但允許您指定繪製影像的位置以及要繪製的部分。

目標和來源區域以 4 元組矩形給出。如果省略來源,則會複製整個影像。如果來源和目標具有不同的大小,則會根據需要調整影像大小。

expose(handle: int | HDC | HWND) None[原始碼]

將點陣圖內容複製到裝置內容。

參數:

handle – 裝置內容 (HDC),轉換為 Python 整數,或是 HDC 或 HWND 實例。在 PythonWin 中,您可以使用 CDC.GetHandleAttrib() 來取得合適的 handle。

frombytes(buffer: bytes) None[原始碼]

從位元組資料載入顯示記憶體內容。

參數:

buffer – 包含顯示資料的緩衝區(通常是從 tobytes() 傳回的資料)

paste(im: Image, box: tuple[int, int, int, int] | None = None) None[原始碼]

將 PIL 影像貼到點陣圖影像中。

參數:
  • im – PIL 影像。大小必須符合目標區域。如果模式不符,影像會轉換為點陣圖影像的模式。

  • box – 定義左、上、右和下像素座標的 4 元組。請參閱座標系統。如果以 None 取代元組,則會假設使用所有影像。

query_palette(handle: int | HDC | HWND) int[原始碼]

在指定的裝置內容中安裝與影像相關聯的調色盤。

這個方法應在 Windows 發出的 QUERYNEWPALETTEPALETTECHANGED 事件時呼叫。如果這個方法傳回非零值,表示有一個或多個顯示調色盤項目已變更,而且應該重新繪製影像。

參數:

handle – 裝置內容 (HDC),轉換為 Python 整數,或是 HDC 或 HWND 實例。

傳回值:

已變更的項目數量(如果有一個或多個項目,表示應重新繪製影像)。

tobytes() bytes[原始碼]

將顯示記憶體內容複製到位元組物件。

傳回值:

包含顯示資料的位元組物件。

class PIL.ImageWin.HDC(dc: int)[原始碼]

封裝 HDC 整數。產生的物件可以傳遞至 draw()expose() 方法。

class PIL.ImageWin.HWND(wnd: int)[原始碼]

封裝 HWND 整數。產生的物件可以傳遞至 draw()expose() 方法,以取代 DC。