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]

バイトデータからディスプレイメモリの内容を読み込みます。

パラメータ:

buffer – ディスプレイデータを含むバッファ(通常は 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からのQUERYNEWPALETTEイベントとPALETTECHANGEDイベントで呼び出す必要があります。このメソッドがゼロ以外の値を返す場合、1つ以上のディスプレイパレットエントリが変更されたことを示し、画像を再描画する必要があります。

パラメータ:

handle – デバイスコンテキスト(HDC)。Python整数にキャストするか、HDCまたはHWNDインスタンスを使用します。

戻り値:

変更されたエントリの数(1つ以上のエントリがある場合、画像は再描画する必要があることを示します)。

tobytes() bytes[source]

ディスプレイメモリのコンテンツをバイトオブジェクトにコピーします。

戻り値:

ディスプレイデータを含むバイトオブジェクト。

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

HDC整数をラップします。結果のオブジェクトは、draw()メソッドとexpose()メソッドに渡すことができます。

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

HWND整数をラップします。結果のオブジェクトは、DCの代わりに、draw()メソッドとexpose()メソッドに渡すことができます。