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)[source]

具有给定模式和大小的 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[source]

与 expose 相同,但允许您指定绘制图像的位置以及绘制图像的哪一部分。

目标区域和源区域都以 4 元组矩形给出。如果省略源,则复制整个图像。如果源和目标大小不同,则图像将根据需要调整大小。

expose(handle: int | HDC | HWND) None[source]

将位图内容复制到设备上下文。

参数:

handle – 设备上下文 (HDC),转换为 Python 整数,或 HDC 或 HWND 实例。在 PythonWin 中,您可以使用 CDC.GetHandleAttrib() 来获取合适的句柄。

frombytes(buffer: bytes) None[source]

从字节数据加载显示内存内容。

参数:

缓冲区 – 包含显示数据的缓冲区(通常是从 tobytes() 返回的数据)。

paste(im: Image, box: tuple[int, int, int, int] | None = None) None[source]

将 PIL 图像粘贴到位图图像中。

参数:
  • im – 一个 PIL 图像。大小必须与目标区域匹配。如果模式不匹配,图像将转换为位图图像的模式。

  • box – 一个 4 元组,定义左上角、右下角像素坐标。参见 坐标系。如果给出 None 而不是元组,则假定所有图像。

query_palette(handle: int | HDC | HWND) int[source]

在给定的设备上下文中安装与图像相关的调色板。

此方法应在来自 Windows 的 QUERYNEWPALETTEPALETTECHANGED 事件时调用。如果此方法返回非零值,则一个或多个显示调色板条目已更改,图像应重新绘制。

参数:

handle – 设备上下文 (HDC),转换为 Python 整数,或 HDC 或 HWND 实例。

返回:

已更改的条目数(如果一个或多个条目,这表示图像应重新绘制)。

tobytes() bytes[source]

将显示内存内容复制到字节对象。

返回:

包含显示数据的字节对象。

class PIL.ImageWin.HDC(dc: int)[source]

包装一个 HDC 整数。生成的可以传递给 draw()expose() 方法。

class PIL.ImageWin.HWND(wnd: int)[source]

包装一个 HWND 整数。生成的可以传递给 draw()expose() 方法,而不是 DC。