Image モジュール

Image モジュールは、PIL画像を表現するために使用される同じ名前のクラスを提供します。このモジュールは、ファイルから画像をロードしたり、新しい画像を作成したりするための関数を含む、いくつかのファクトリ関数も提供します。

画像のオープン、回転、表示(デフォルトビューアーを使用)

次のスクリプトは画像をロードし、45度回転させ、外部ビューアー(通常はUnixではxv、Windowsではペイントプログラム)を使用して表示します。

from PIL import Image
with Image.open("hopper.jpg") as im:
    im.rotate(45).show()

サムネイルの作成

次のスクリプトは、現在のディレクトリにあるすべてのJPEG画像のサムネイルを、最大解像度128x128でアスペクト比を維持したまま作成します。

from PIL import Image
import glob, os

size = 128, 128

for infile in glob.glob("*.jpg"):
    file, ext = os.path.splitext(infile)
    with Image.open(infile) as im:
        im.thumbnail(size)
        im.save(file + ".thumbnail", "JPEG")

関数

PIL.Image.open(fp: StrOrBytesPath | IO[bytes], mode: Literal['r'] = 'r', formats: list[str] | tuple[str, ...] | None = None) ImageFile.ImageFile[ソース]

指定された画像ファイルを開いて識別します。

これは遅延操作です。この関数はファイルを識別しますが、ファイルは開いたままになり、実際の画像データは、データを処理しようとする(またはload()メソッドを呼び出す)までファイルから読み取られません。new()を参照してください。Pillowでのファイル処理を参照してください。

パラメータ
  • fp – ファイル名(文字列)、os.PathLikeオブジェクト、またはファイルオブジェクト。ファイルオブジェクトは、file.readfile.seek、およびfile.tellメソッドを実装する必要があり、バイナリモードで開かれている必要があります。また、ファイルオブジェクトは読み取り前にゼロにシークされます。

  • mode – モード。指定する場合、この引数は "r" である必要があります。

  • formats – ファイルのロードを試みるフォーマットのリストまたはタプル。これは、チェックされるフォーマットのセットを制限するために使用できます。Noneを渡して、サポートされているすべてのフォーマットを試してください。python3 -m PILを実行するか、PIL.features.pilinfo()関数を使用することで、利用可能なフォーマットのセットを表示できます。

戻り値

Imageオブジェクト。

例外
  • FileNotFoundError – ファイルが見つからない場合。

  • PIL.UnidentifiedImageError – 画像を開いて識別できない場合。

  • ValueErrormodeが "r" でない場合、またはfpStringIOインスタンスが使用されている場合。

  • TypeErrorformatsNone、リスト、またはタプルではない場合。

警告

解凍爆弾」(つまり、大量のデータに解凍され、多くのメモリを使用してクラッシュや混乱を引き起こすように設計された悪意のあるファイル)によって引き起こされる可能性のあるDOS攻撃から保護するために、Pillowは画像内のピクセル数が一定の制限MAX_IMAGE_PIXELSを超えている場合、DecompressionBombWarningを発行します。

このしきい値は、MAX_IMAGE_PIXELSを設定することで変更できます。Image.MAX_IMAGE_PIXELS = Noneを設定することで無効にできます。

必要に応じて、warnings.simplefilter('error', Image.DecompressionBombWarning)を使用して警告をエラーに変えたり、warnings.simplefilter('ignore', Image.DecompressionBombWarning)を使用して完全に抑制したりできます。警告をstderrではなくロギング機能に出力する場合は、ロギングドキュメントも参照してください。

ピクセル数がMAX_IMAGE_PIXELSの2倍より大きい場合、代わりにDecompressionBombErrorが発生します。

画像処理

PIL.Image.alpha_composite(im1: Image, im2: Image) Image[ソース]

im1の上にim2をアルファ合成します。

パラメータ
  • im1 – 1番目の画像。モードはRGBAである必要があります。

  • im2 – 2番目の画像。モードはRGBAで、1番目の画像と同じサイズである必要があります。

戻り値

Imageオブジェクト。

PIL.Image.blend(im1: Image, im2: Image, alpha: float) Image[ソース]

2つの入力画像の間を、一定のアルファ値を使用して補間することにより、新しい画像を作成します。

out = image1 * (1.0 - alpha) + image2 * alpha
パラメータ
  • im1 – 1番目の画像。

  • im2 – 2番目の画像。モードとサイズは1番目の画像と同じである必要があります。

  • alpha – 補間アルファ係数。アルファが0.0の場合、1番目の画像のコピーが返されます。アルファが1.0の場合、2番目の画像のコピーが返されます。アルファ値に制限はありません。必要に応じて、結果は許可された出力範囲に収まるようにクリップされます。

戻り値

Imageオブジェクト。

PIL.Image.composite(image1: Image, image2: Image, mask: Image) Image[ソース]

透明マスクを使用して画像をブレンドすることにより、合成画像を作成します。

パラメータ
  • image1 – 1番目の画像。

  • image2 – 2番目の画像。モードとサイズは1番目の画像と同じである必要があります。

  • mask – マスク画像。この画像のモードは「1」、「L」、または「RGBA」にすることができ、他の2つの画像と同じサイズである必要があります。

PIL.Image.eval(image: Image, *args: Callable[[int], float]) Image[ソース]

与えられた画像の各ピクセルに関数(1つの引数を受け取る必要があります)を適用します。画像に複数のバンドがある場合、同じ関数が各バンドに適用されます。関数は可能なピクセル値ごとに1回評価されるため、ランダムなコンポーネントやその他のジェネレーターは使用できないことに注意してください。

パラメータ
  • image – 入力画像。

  • function – 1つの整数引数を受け取る関数オブジェクト。

戻り値

Imageオブジェクト。

PIL.Image.merge(mode: str, bands: Sequence[Image]) Image[ソース]

一連のシングルバンド画像をマージして、新しいマルチバンド画像を作成します。

パラメータ
  • mode – 出力画像に使用するモード。参照:モード

  • bands – 出力画像の各バンドに1つのシングルバンド画像を含むシーケンス。すべてのバンドは同じサイズである必要があります。

戻り値

Imageオブジェクト。

画像の作成

PIL.Image.new(mode: str, size: tuple[int, int] | list[int], color: float | tuple[float, ...] | str | None = 0) Image[ソース]

指定されたモードとサイズで新しい画像を作成します。

パラメータ
  • mode – 新しい画像に使用するモード。参照:モード

  • size – ピクセル単位の(幅、高さ)を含む2タプル。

  • color – 画像に使用する色。デフォルトは黒です。指定する場合は、シングルバンドモードの場合は単一の整数または浮動小数点値、マルチバンドモードの場合はタプル(バンドごとに1つの値)である必要があります。RGBまたはHSV画像を作成する場合は、ImageColorモジュールでサポートされているカラーストリングも使用できます。色がNoneの場合、画像は初期化されません。

戻り値

Imageオブジェクト。

PIL.Image.fromarray(obj: SupportsArrayInterface, mode: str | None = None) Image[ソース]

配列インターフェースをエクスポートするオブジェクト(バッファープロトコルを使用)から画像メモリを作成します。

from PIL import Image
import numpy as np
a = np.zeros((5, 5))
im = Image.fromarray(a)

objが連続していない場合、tobytesメソッドが呼び出され、frombuffer()が使用されます。

NumPyの場合、Pillowモードが必ずしもNumPyのdtypesに対応しているわけではないことに注意してください。Pillowモードは、1ビットピクセル、8ビットピクセル、32ビット符号付き整数ピクセル、および32ビット浮動小数点ピクセルのみを提供します。

Pillow画像は配列に変換することもできます。

from PIL import Image
import numpy as np
im = Image.open("hopper.jpg")
a = np.asarray(im)

ただし、Pillow画像を配列に変換する場合、転送されるのはピクセル値のみです。つまり、PおよびPAモードの画像はパレットを失います。

パラメータ
  • obj – 配列インターフェースを持つオブジェクト

  • mode

    objの読み込み時に使用するオプションのモード。 Noneの場合、型から決定されます。

    これは読み込み後のデータの変換には使用されませんが、データの読み込み方法を変更するために使用されます。

    from PIL import Image
    import numpy as np
    a = np.full((1, 1), 300)
    im = Image.fromarray(a, mode="L")
    im.getpixel((0, 0))  # 44
    im = Image.fromarray(a, mode="RGB")
    im.getpixel((0, 0))  # (44, 1, 0)
    

    モードに関する一般的な情報については、モードを参照してください。

戻り値

イメージオブジェクト。

バージョン 1.1.6 で追加されました。

PIL.Image.frombytes(mode: str, size: tuple[int, int], data: bytes | bytearray | SupportsArrayInterface, decoder_name: str = 'raw', *args: Any) Image[ソース]

バッファ内のピクセルデータから画像メモリのコピーを作成します。

最も簡単な形式では、この関数は3つの引数 (mode, size, およびアンパックされたピクセルデータ) を取ります。

PILでサポートされている任意のピクセルデコーダーを使用することもできます。利用可能なデコーダーの詳細については、独自のファイルコーデックの作成のセクションを参照してください。

この関数はピクセルデータのみをデコードし、画像全体はデコードしないことに注意してください。文字列に画像全体がある場合は、BytesIOオブジェクトでラップし、open()を使用してロードします。

パラメータ
  • mode – イメージモード。 モードを参照してください。

  • size – 画像サイズ。

  • data – 指定されたモードの生データを含むバイトバッファ。

  • decoder_name – 使用するデコーダー。

  • args – 指定されたデコーダーの追加パラメーター。

戻り値

Imageオブジェクト。

PIL.Image.frombuffer(mode: str, size: tuple[int, int], data: bytes | SupportsArrayInterface, decoder_name: str = 'raw', *args: Any) Image[ソース]

バイトバッファ内のピクセルデータを参照する画像メモリを作成します。

この関数はfrombytes()に似ていますが、可能な場合はバイトバッファのデータを使用します。つまり、元のバッファオブジェクトへの変更はこの画像に反映されます。すべてのモードがメモリを共有できるわけではありません。サポートされているモードには、"L"、"RGBX"、"RGBA"、および "CMYK" があります。

この関数はピクセルデータのみをデコードし、画像全体はデコードしないことに注意してください。文字列に画像ファイル全体がある場合は、BytesIOオブジェクトでラップし、open()を使用してロードします。

「raw」デコーダーに使用されるデフォルトのパラメーターは、frombytes()に使用されるものとは異なります。これはバグであり、将来のリリースで修正される可能性があります。現在のリリースでは、これを行うと警告が発行されます。警告を無効にするには、パラメーターの完全なセットを提供する必要があります。詳細については、下記を参照してください。

パラメータ
  • mode – イメージモード。 モードを参照してください。

  • size – 画像サイズ。

  • data – 指定されたモードの生データを含むバイトまたはその他のバッファオブジェクト。

  • decoder_name – 使用するデコーダー。

  • args

    指定されたデコーダーの追加パラメーター。デフォルトのエンコーダー("raw")の場合、パラメーターの完全なセットを提供することをお勧めします。

    frombuffer(mode, size, data, "raw", mode, 0, 1)
    

戻り値

Imageオブジェクト。

バージョン 1.1.4 で追加されました。

画像の生成

PIL.Image.effect_mandelbrot(size: tuple[int, int], extent: tuple[float, float, float, float], quality: int) Image[ソース]

指定された範囲をカバーするマンデルブロ集合を生成します。

パラメータ
  • size – ピクセル単位のリクエストされたサイズ。2タプル: (幅、高さ)。

  • extent – カバーする範囲。4タプル: (x0, y0, x1, y1)。

  • quality – 品質。

PIL.Image.effect_noise(size: tuple[int, int], sigma: float) Image[ソース]

128を中心としたガウスノイズを生成します。

パラメータ
  • size – ピクセル単位のリクエストされたサイズ。2タプル: (幅、高さ)。

  • sigma – ノイズの標準偏差。

PIL.Image.linear_gradient(mode: str) Image[ソース]

黒から白への線形グラデーションを、上から下へ、256x256 で生成します。

パラメータ

mode – 入力モード。

PIL.Image.radial_gradient(mode: str) Image[ソース]

黒から白への放射状グラデーションを、中心から端へ、256x256 で生成します。

パラメータ

mode – 入力モード。

プラグインの登録

PIL.Image.preinit() None[ソース]

BMP、GIF、JPEG、PPM、PPMファイル形式のドライバーを明示的にロードします。

画像のオープンまたは保存時に呼び出されます。

PIL.Image.init() bool[ソース]

Python Imaging Libraryを明示的に初期化します。この関数は、利用可能なすべてのファイル形式ドライバーをロードします。

preinit() が不十分な場合、画像のオープンまたは保存時に呼び出され、pilinfo() によっても呼び出されます。

注記

これらの関数は、プラグイン作成者が使用するためのものです。preinit() または init() の一部としてプラグインがロードされるときに呼び出されます。アプリケーション作成者は無視できます。

PIL.Image.register_open(id: str, factory: Callable[[IO[bytes], str | bytes], ImageFile.ImageFile] | type[ImageFile.ImageFile], accept: Callable[[bytes], bool | str] | None = None) None[ソース]

イメージファイルプラグインを登録します。この関数は、アプリケーションコードでは使用しないでください。

パラメータ
  • id – 画像形式の識別子。

  • factory – イメージファイルファクトリメソッド。

  • accept – 別の形式の画像ですばやく拒否するために使用できるオプションの関数。

PIL.Image.register_mime(id: str, mimetype: str) None[ソース]

Image.MIME を設定して、画像のMIMEタイプを登録します。この関数は、アプリケーションコードでは使用しないでください。

Image.MIME は、画像形式識別子からMIME形式へのマッピングを提供しますが、get_format_mimetype() は、特定の画像に対して異なる結果を提供できます。

パラメータ
  • id – 画像形式の識別子。

  • mimetype – この形式の画像のMIMEタイプ。

PIL.Image.register_save(id: str, driver: Callable[[Image, IO[bytes], str | bytes], None]) None[ソース]

画像の保存関数を登録します。この関数は、アプリケーションコードでは使用しないでください。

パラメータ
  • id – 画像形式の識別子。

  • driver – この形式で画像を保存する関数。

PIL.Image.register_save_all(id: str, driver: Callable[[Image, IO[bytes], str | bytes], None]) None[source]

マルチフレーム形式のすべてのフレームを保存するための画像関数を登録します。この関数はアプリケーションコードで使用すべきではありません。

パラメータ
  • id – 画像形式の識別子。

  • driver – この形式で画像を保存する関数。

PIL.Image.register_extension(id: str, extension: str) None[source]

画像拡張子を登録します。この関数はアプリケーションコードで使用すべきではありません。

パラメータ
  • id – 画像形式の識別子。

  • extension – この形式に使用される拡張子。

PIL.Image.register_extensions(id: str, extensions: list[str]) None[source]

画像拡張子を登録します。この関数はアプリケーションコードで使用すべきではありません。

パラメータ
  • id – 画像形式の識別子。

  • extensions – この形式に使用される拡張子のリスト。

PIL.Image.registered_extensions() dict[str, str][source]

登録されたプラグインに属するすべてのファイル拡張子を含む辞書を返します

PIL.Image.register_decoder(name: str, decoder: type[ImageFile.PyDecoder]) None[source]

画像デコーダーを登録します。この関数はアプリケーションコードで使用すべきではありません。

パラメータ
  • name – デコーダーの名前

  • decoder – ImageFile.PyDecoderオブジェクト

バージョン 4.1.0 で追加。

PIL.Image.register_encoder(name: str, encoder: type[ImageFile.PyEncoder]) None[source]

画像エンコーダーを登録します。この関数はアプリケーションコードで使用すべきではありません。

パラメータ
  • name – エンコーダーの名前

  • encoder – ImageFile.PyEncoderオブジェクト

バージョン 4.1.0 で追加。

Imageクラス

class PIL.Image.Image[source]

このクラスは画像オブジェクトを表します。Image オブジェクトを作成するには、適切なファクトリ関数を使用してください。Imageコンストラクターを直接呼び出す必要はほとんどありません。

Image クラスのインスタンスには、以下のメソッドがあります。特に記載がない限り、すべてのメソッドは、結果の画像を保持する Image クラスの新しいインスタンスを返します。

Image.alpha_composite(im: Image, dest: Sequence[int] = (0, 0), source: Sequence[int] = (0, 0)) None[source]

Image.alpha_composite の「インプレース」アナログ。この画像の上に画像を合成します。

パラメータ
  • im – この上に合成する画像

  • dest – オプションの 2 タプル (左、上) で、この (宛先) 画像の左上隅を指定します。

  • source – オーバーレイソース画像の左上隅のオプションの 2 タプル (左、上)、またはソース矩形の境界の 4 タプル (左、上、右、下)

パフォーマンスに関する注意: 現在、コアレイヤーにはインプレースで実装されていません。

Image.apply_transparency() None[source]

P モードの画像の情報辞書に「transparency」キーがある場合、キーを削除し、代わりに透過性をパレットに適用します。それ以外の場合、画像は変更されません。

Image.convert(mode: str | None = None, matrix: tuple[float, ...] | None = None, dither: Dither | None = None, palette: Palette = Palette.WEB, colors: int = 256) Image[ソース]

この画像の変換されたコピーを返します。「P」モードの場合、このメソッドはパレットを通じてピクセルを変換します。mode が省略された場合、画像とパレット内のすべての情報をパレットなしで表現できるようにモードが選択されます。

これは、「L」、「RGB」、および「CMYK」間の可能なすべての変換をサポートしています。matrix 引数は、「L」および「RGB」のみをサポートします。

カラー画像をグレースケール(モード「L」)に変換する場合、ライブラリは ITU-R 601-2 ルマ変換を使用します。

L = R * 299/1000 + G * 587/1000 + B * 114/1000

グレースケール(「L」)または「RGB」画像をバイレベル(モード「1」)画像に変換するデフォルトの方法では、元の画像の輝度レベルを近似するために Floyd-Steinberg ディザを使用します。ディザが None の場合、127 より大きいすべての値が 255 (白) に設定され、他のすべての値が 0 (黒) に設定されます。他のしきい値を使用するには、point() メソッドを使用します。

matrix 引数なしで「RGBA」から「P」に変換する場合、この操作は quantize() に渡され、dither および palette は無視されます。

「PA」から変換する場合、「RGBA」パレットが存在する場合は、パレットからの値の代わりに画像からのアルファチャネルが使用されます。

パラメータ
  • mode – 要求されたモード。参照: モード.

  • matrix – オプションの変換行列。指定する場合、これは浮動小数点値を含む 4 タプルまたは 12 タプルである必要があります。

  • dither – ディザリングメソッド。「RGB」モードから「P」に変換する場合、または「RGB」または「L」から「1」に変換する場合に使用します。利用可能なメソッドは、Dither.NONE または Dither.FLOYDSTEINBERG (デフォルト) です。これは matrix が指定されている場合は使用されないことに注意してください。

  • palette – 「RGB」モードから「P」に変換する際に使用するパレット。利用可能なパレットは、Palette.WEB または Palette.ADAPTIVE です。

  • colorsPalette.ADAPTIVE パレットに使用する色の数。デフォルトは 256 です。

戻り値の型:

Image

戻り値

Imageオブジェクト。

次の例では、(D65ルミナントを使用して、ITU-R 709に従って線形に較正された)RGB画像をCIE XYZ色空間に変換します。

rgb2xyz = (
    0.412453, 0.357580, 0.180423, 0,
    0.212671, 0.715160, 0.072169, 0,
    0.019334, 0.119193, 0.950227, 0)
out = im.convert("RGB", rgb2xyz)
Image.copy() Image[ソース]

この画像をコピーします。画像に何かを貼り付けたいが、元の画像を保持したい場合は、このメソッドを使用します。

戻り値の型:

Image

戻り値

Imageオブジェクト。

Image.crop(box: tuple[float, float, float, float] | None = None) Image[ソース]

この画像から長方形領域を返します。box は、左、上、右、下のピクセル座標を定義する 4 タプルです。座標系 を参照してください。

注: Pillow 3.4.0 より前は、これは遅延操作でした。

パラメータ

box – クロップ矩形((左, 上, 右, 下) タプル)。

戻り値の型:

Image

戻り値

Imageオブジェクト。

これは、指定された座標で入力画像をトリミングします。

from PIL import Image

with Image.open("hopper.jpg") as im:

    # The crop method from the Image module takes four coordinates as input.
    # The right can also be represented as (left+width)
    # and lower can be represented as (upper+height).
    (left, upper, right, lower) = (20, 20, 100, 100)

    # Here the image "im" is cropped and assigned to new variable im_crop
    im_crop = im.crop((left, upper, right, lower))
Image.draft(mode: str | None, size: tuple[int, int] | None) tuple[str, tuple[int, int, float, float]] | None[ソース]

与えられたモードとサイズに可能な限り近い画像のバージョンを返すように、画像ファイルローダーを設定します。たとえば、このメソッドを使用して、カラーJPEGをロード中にグレースケールに変換できます。

変更が行われた場合、選択された mode と、変更された画像内での元の画像の座標を持つ box を含むタプルを返します。

このメソッドは、Image オブジェクトをその場で変更することに注意してください。画像がすでにロードされている場合、このメソッドは効果がありません。

注意:このメソッドは、ほとんどの画像に対して実装されていません。現在、JPEGおよびMPO画像でのみ実装されています。

パラメータ
  • mode – 要求されたモード。

  • size – ピクセル単位のリクエストされたサイズ。2タプル: (幅、高さ)。

Image.effect_spread(distance: int) Image[ソース]

画像内のピクセルをランダムに拡散させます。

パラメータ

distance – ピクセルを拡散させる距離。

Image.entropy(mask: Image | None = None, extrema: tuple[float, float] | None = None) float[ソース]

画像のエン トロピー を計算して返します。

このメソッドでは、2値画像(モード「1」)はグレースケール(「L」)画像として扱われます。

マスクが指定されている場合、このメソッドは、マスク画像がゼロでない画像の部分のヒストグラムを使用します。マスク画像は、画像と同じサイズで、2値画像(モード「1」)またはグレースケール画像(「L」)のいずれかである必要があります。

パラメータ
  • mask – オプションのマスク。

  • extrema – 手動で指定された極値のオプションのタプル。

戻り値

画像のエン トロピー を表す浮動小数点値

Image.filter(filter: ImageFilter.Filter | type[ImageFilter.Filter]) Image[ソース]

指定されたフィルターを使用してこの画像をフィルター処理します。利用可能なフィルターのリストについては、ImageFilter モジュールを参照してください。

パラメータ

filter – フィルターカーネル。

戻り値

Imageオブジェクト。

これは、ImageFilter モジュールのフィルターを使用して入力画像をぼかします。

from PIL import Image, ImageFilter

with Image.open("hopper.jpg") as im:

    # Blur the input image using the filter ImageFilter.BLUR
    im_blurred = im.filter(filter=ImageFilter.BLUR)
Image.frombytes(data: bytes | bytearray | SupportsArrayInterface, decoder_name: str = 'raw', *args: Any) None[ソース]

バイトオブジェクトからのピクセルデータを使用して、この画像をロードします。

このメソッドは、frombytes() 関数に似ていますが、新しい画像オブジェクトを作成する代わりに、この画像にデータをロードします。

Image.getbands() tuple[str, ...][ソース]

この画像の各バンドの名前を含むタプルを返します。たとえば、RGB画像の getbands は(“R”、“G”、“B”)を返します。

戻り値

バンド名を含むタプル。

戻り値の型:

タプル

これは、入力画像のバンドを取得するのに役立ちます

from PIL import Image

with Image.open("hopper.jpg") as im:
    print(im.getbands())  # Returns ('R', 'G', 'B')
Image.getbbox(*, alpha_only: bool = True) tuple[int, int, int, int] | None[source]

画像の非ゼロ領域のバウンディングボックスを計算します。

パラメータ

alpha_only – オプションのフラグで、デフォルトは True です。 True で、画像にアルファチャンネルがある場合、透明なピクセルをトリミングします。それ以外の場合は、すべてのチャンネルがゼロの場合にピクセルをトリミングします。キーワード専用引数です。

戻り値

バウンディングボックスは、左、上、右、下のピクセル座標を定義する4つのタプルとして返されます。座標系を参照してください。画像が完全に空の場合、このメソッドはNoneを返します。

これは、入力画像のバウンディングボックス座標を取得するのに役立ちます。

from PIL import Image

with Image.open("hopper.jpg") as im:
    print(im.getbbox())
    # Returns four coordinates in the format (left, upper, right, lower)
Image.getchannel(channel: int | str) Image[source]

ソース画像の単一チャンネルを含む画像を返します。

パラメータ

channel – 返すチャンネル。インデックス(「RGB」の「R」チャンネルの場合は0)またはチャンネル名(「RGBA」のアルファチャンネルの場合は「A」)を指定できます。

戻り値

「L」モードの画像。

バージョン 4.3.0 で追加。

Image.getcolors(maxcolors: int = 256) list[tuple[int, tuple[int, ...]]] | list[tuple[int, float]] | None[source]

この画像で使用されている色のリストを返します。

色は画像のモードになります。たとえば、RGB画像は(赤、緑、青)の色値のタプルを返し、P画像はパレット内の色のインデックスを返します。

パラメータ

maxcolors – 色の最大数。この数を超えると、このメソッドはNoneを返します。デフォルトの制限は256色です。

戻り値

(カウント、ピクセル)値のソートされていないリスト。

Image.getdata(band: int | None = None) core.ImagingCore[source]

この画像の内容をピクセル値を含むシーケンスオブジェクトとして返します。シーケンスオブジェクトはフラット化されているため、1行目の値は0行目の値の直後に続き、以下同様です。

このメソッドによって返されるシーケンスオブジェクトは、特定のシーケンス操作のみをサポートする内部PILデータ型であることに注意してください。通常のシーケンス(たとえば、印刷用)に変換するには、list(im.getdata())を使用します。

パラメータ

band – 返すバンド。デフォルトでは、すべてのバンドが返されます。単一のバンドを返すには、インデックス値(たとえば、「RGB」画像から「R」バンドを取得するには0)を渡します。

戻り値

シーケンスのようなオブジェクト。

Image.getexif() Exif[source]

画像からEXIFデータを取得します。

戻り値

Exif オブジェクト。

Image.getextrema() tuple[float, float] | tuple[tuple[int, int], ...][source]

画像内の各バンドの最小および最大ピクセル値を取得します。

戻り値

シングルバンド画像の場合、最小および最大ピクセル値を含む2タプル。マルチバンド画像の場合、バンドごとに1つの2タプルを含むタプル。

Image.getpalette(rawmode: str | None = 'RGB') list[int] | None[ソース]

画像のパレットをリストとして返します。

パラメータ

rawmode

パレットを返すモード。Noneを指定すると、現在のモードでパレットが返されます。

バージョン 9.1.0 で追加。

戻り値

色の値のリスト[r, g, b, ...]、または画像にパレットがない場合は None。

Image.getpixel(xy: tuple[int, int] | list[int]) float | tuple[int, ...] | None[ソース]

指定された位置のピクセル値を返します。

パラメータ

xy – (x, y)で指定される座標。「座標系」を参照してください。

戻り値

ピクセル値。画像が多層画像の場合、このメソッドはタプルを返します。

Image.getprojection() tuple[list[int], list[int]][ソース]

X軸とY軸への投影を取得します

戻り値

それぞれX軸とY軸に沿って非ゼロピクセルがある場所を示す2つのシーケンス。

Image.getxmp() dict[str, Any][ソース]

XMPタグを含む辞書を返します。defusedxmlをインストールする必要があります。

戻り値

辞書内のXMPタグ。

Image.histogram(mask: Image | None = None, extrema: tuple[float, float] | None = None) list[int][ソース]

画像のヒストグラムを返します。ヒストグラムは、ソース画像内のピクセル値ごとに1つずつ、ピクセル数のリストとして返されます。カウントは、画像がバンドあたり8ビットを超えていても、各バンドに対して256個のビンにグループ化されます。画像に複数のバンドがある場合、すべてのバンドのヒストグラムが連結されます(たとえば、「RGB」画像のヒストグラムには768個の値が含まれます)。

このメソッドでは、2値画像(モード「1」)はグレースケール(「L」)画像として扱われます。

マスクが提供されている場合、メソッドは、マスク画像が非ゼロである画像のこれらの部分のヒストグラムを返します。マスク画像は、画像と同じサイズである必要があり、バイレベル画像(モード「1」)またはグレースケール画像(「L」)である必要があります。

パラメータ
  • mask – オプションのマスク。

  • extrema – 手動で指定された極値のオプションのタプル。

戻り値

ピクセル数を含むリスト。

Image.paste(im: Image | str | float | tuple[float, ...], box: Image | tuple[int, int, int, int] | tuple[int, int] | None = None, mask: Image | None = None) None[ソース]

別の画像をこの画像に貼り付けます。box 引数は、左上隅を示す 2 タプル、左、上、右、下のピクセル座標を定義する 4 タプル、または None ( (0, 0) と同じ) のいずれかです。座標系を参照してください。4 タプルが与えられた場合、貼り付ける画像のサイズは領域のサイズと一致する必要があります。

モードが一致しない場合、貼り付けられた画像はこの画像のモードに変換されます (詳細については、convert() メソッドを参照してください)。

画像ではなく、ソースはピクセル値を含む整数またはタプルにすることができます。このメソッドは、指定された色で領域を塗りつぶします。RGB 画像を作成する場合、ImageColor モジュールでサポートされている色文字列も使用できます。

マスクが指定されている場合、このメソッドはマスクで示された領域のみを更新します。「1」、「L」、「LA」、「RGBA」、「RGBa」のいずれかの画像を使用できます (存在する場合は、アルファバンドがマスクとして使用されます)。マスクが 255 の場合、指定された画像がそのままコピーされます。マスクが 0 の場合、現在の値が保持されます。中間値は、アルファチャンネルがある場合はそれらも含めて、2つの画像を一緒に混合します。

アルファチャンネルに関して画像を結合する場合は、alpha_composite()を参照してください。

パラメータ
  • im – ソース画像またはピクセル値 (整数、浮動小数点数、またはタプル)。

  • box

    貼り付ける領域を示すオプションの 4 タプル。代わりに 2 タプルを使用した場合、左上隅として扱われます。省略した場合、または None の場合、ソースは左上隅に貼り付けられます。

    2 番目の引数として画像が指定され、3 番目の引数がない場合、box のデフォルトは (0, 0) になり、2 番目の引数はマスク画像として解釈されます。

  • mask – オプションのマスク画像。

Image.point(lut: Sequence[float] | NumpyArray | Callable[[int], float] | Callable[[ImagePointTransform], ImagePointTransform | float] | ImagePointHandler, mode: str | None = None) Image[ソース]

この画像をルックアップテーブルまたは関数を通してマッピングします。

パラメータ
  • lut

    ルックアップテーブル。画像内のバンドごとに 256 (または self.mode=="I" かつ mode == "L" の場合は 65536) の値が含まれています。代わりに、単一の引数を受け取る関数を使用できます。関数は、可能なピクセル値ごとに 1 回呼び出され、結果のテーブルが画像のすべてのバンドに適用されます。

    ImagePointHandler オブジェクトにすることもできます

    class Example(Image.ImagePointHandler):
      def point(self, im: Image) -> Image:
        # Return result
    

  • mode – 出力モード (デフォルトは入力と同じ)。これは、ソース画像のモードが「L」または「P」で、出力モードが「1」の場合、またはソース画像モードが「I」で、出力モードが「L」の場合にのみ使用できます。

戻り値

Imageオブジェクト。

Image.putalpha(alpha: Image | int) None[ソース]

この画像にアルファレイヤーを追加または置き換えます。画像にアルファレイヤーがない場合、「LA」または「RGBA」に変換されます。新しいレイヤーは、「L」または「1」のいずれかである必要があります。

パラメータ

alpha – 新しいアルファレイヤー。これは、この画像と同じサイズの「L」または「1」の画像、または整数にすることができます。

Image.putdata(data: Sequence[float] | Sequence[Sequence[int]] | core.ImagingCore | NumpyArray, scale: float = 1.0, offset: float = 0.0) None[ソース]

フラット化されたシーケンスオブジェクトからピクセルデータを画像にコピーします。値は左上隅 (0, 0) から始まり、行末まで続き、その直後に 2 行目の最初の値が続く必要があります。データは、画像またはシーケンスのいずれかが終了するまで読み込まれます。スケールとオフセットの値は、シーケンス値を調整するために使用されます:**pixel = value*scale + offset**。

パラメータ
  • data – フラット化されたシーケンスオブジェクト。

  • scale – オプションのスケール値。デフォルトは 1.0 です。

  • offset – オプションのオフセット値。デフォルトは 0.0 です。

Image.putpalette(data: ImagePalette.ImagePalette | bytes | Sequence[int], rawmode: str = 'RGB') None[ソース]

この画像にパレットをアタッチします。画像は "P", "PA", "L" または "LA" 画像である必要があります。

パレットシーケンスには、最大で 256 色を含めることができ、生のモードの各チャネルに対して 1 つの整数値で構成されます。例えば、生のモードが "RGB" の場合、対応する 256 色のピクセルインデックスの赤、緑、青の値で構成される最大 768 個の値を含めることができます。生のモードが "RGBA" の場合、赤、緑、青、およびアルファ値を含む最大 1024 個の値を含めることができます。

または、整数シーケンスの代わりに 8 ビットの文字列を使用することもできます。

パラメータ
  • data – パレットシーケンス(リストまたは文字列)。

  • rawmode – パレットの生のモード。"RGB"、"RGBA"、または "RGB" または "RGBA" に変換できるモード(例: "R", "BGR;15", "RGBA;L")。

Image.putpixel(xy: tuple[int, int], value: float | tuple[int, ...] | list[int]) None[ソース]

指定された位置のピクセルを変更します。色は、シングルバンド画像の場合は単一の数値として、マルチバンド画像の場合はタプルとして指定されます。これに加えて、RGB および RGBA タプルは P および PA 画像にも使用できます。

このメソッドは比較的低速であることに注意してください。より大規模な変更を行う場合は、paste() または ImageDraw モジュールを使用してください。

参照

パラメータ
  • xy – ピクセル座標。(x, y) として指定します。座標系を参照してください。

  • value – ピクセル値。

Image.quantize(colors: int = 256, method: int | None = None, kmeans: int = 0, palette: Image | None = None, dither: Dither = Dither.FLOYDSTEINBERG) Image[ソース]

画像を、指定された色数の 'P' モードに変換します。

パラメータ
戻り値

新しい画像

Image.reduce(factor: int | tuple[int, int], box: tuple[int, int, int, int] | None = None) Image[ソース]

画像が factor 倍に縮小されたコピーを返します。画像のサイズが factor で割り切れない場合、結果のサイズは切り上げられます。

パラメータ
  • factor – 0より大きい整数、または幅と高さの2つの整数を別々に指定するタプル。

  • box – 縮小するソース画像領域を指定する、オプションの4つの整数のタプル。値は (0, 0, 幅, 高さ) の長方形内である必要があります。省略するか None の場合、ソース全体が使用されます。

Image.remap_palette(dest_map: list[int], source_palette: bytes | bytearray | None = None) Image[ソース]

パレットを並べ替えるために画像を書き換えます。

パラメータ
  • dest_map – 元のパレットへのインデックスのリスト。例:[1,0] は2つの項目のパレットを入れ替え、list(range(256)) は恒等変換です。

  • source_palette – バイト列またはNone。

戻り値

Imageオブジェクト。

Image.resize(size: tuple[int, int] | list[int] | NumpyArray, resample: int | None = None, box: tuple[float, float, float, float] | None = None, reducing_gap: float | None = None) Image[ソース]

この画像のリサイズされたコピーを返します。

パラメータ
  • size – ピクセル単位で要求されたサイズ。タプルまたは配列:(幅、高さ)。

  • resample – オプションのリサンプリングフィルターです。これは、Resampling.NEARESTResampling.BOXResampling.BILINEARResampling.HAMMINGResampling.BICUBIC、またはResampling.LANCZOSのいずれかです。画像のモードが "1" または "P" の場合、常にResampling.NEARESTに設定されます。画像モードが "BGR;15", "BGR;16" または "BGR;24" の場合、デフォルトのフィルターはResampling.NEARESTです。それ以外の場合、デフォルトのフィルターはResampling.BICUBICです。参照: フィルター

  • box – スケールされるソース画像の領域を提供する、オプションの4つのfloatのタプルです。値は(0, 0, width, height)の長方形内に収まる必要があります。省略した場合またはNoneの場合、ソース全体が使用されます。

  • reducing_gap – 画像を2段階でリサイズすることで最適化を適用します。まず、reduce()を使用して、整数倍で画像を縮小します。次に、通常のリサンプリングを使用してリサイズします。最後のステップでは、サイズがreducing_gap倍以上変化します。reducing_gapはNone(最初のステップは実行されない)または1.0より大きい必要があります。reducing_gapが大きいほど、結果は公平なリサンプリングに近づきます。reducing_gapが小さいほど、リサイズが速くなります。reducing_gapが3.0以上の場合、ほとんどの場合、結果は公平なリサンプリングと区別できません。デフォルト値はNone(最適化なし)です。

戻り値

Imageオブジェクト。

これは、指定された画像のサイズを(width, height)から(width/2, height/2)にリサイズします。

from PIL import Image

with Image.open("hopper.jpg") as im:

    # Provide the target width and height of the image
    (width, height) = (im.width // 2, im.height // 2)
    im_resized = im.resize((width, height))
Image.rotate(angle: float, resample: Resampling = Resampling.NEAREST, expand: int | bool = False, center: tuple[float, float] | None = None, translate: tuple[int, int] | None = None, fillcolor: float | tuple[float, ...] | str | None = None) Image[source]

この画像の回転したコピーを返します。このメソッドは、中心の周りを反時計回りに指定された角度で回転させたこの画像のコピーを返します。

パラメータ
  • angle – 反時計回りの角度(度単位)。

  • resample – オプションのリサンプリングフィルター。これは、Resampling.NEAREST(最近傍を使用)、Resampling.BILINEAR(2x2環境での線形補間)、またはResampling.BICUBIC(4x4環境での三次スプライン補間)のいずれかです。省略した場合、または画像のモードが "1" または "P" の場合、Resampling.NEARESTに設定されます。フィルターを参照してください。

  • expand – オプションの拡張フラグ。trueの場合、出力画像が回転した画像全体を保持するのに十分な大きさになるように拡張します。falseまたは省略した場合、出力画像を入力画像と同じサイズにします。expandフラグは、中心を中心とした回転であり、平行移動がないことを前提としていることに注意してください。

  • center – オプションの回転中心(2タプル)。原点は左上隅です。デフォルトは画像の中心です。

  • translate – オプションの回転後の平行移動(2タプル)。

  • fillcolor – 回転した画像の外部領域のオプションの色。

戻り値

Imageオブジェクト。

これは、入力画像を反時計回りにtheta度回転させます。

from PIL import Image

with Image.open("hopper.jpg") as im:

    # Rotate the image by 60 degrees counter clockwise
    theta = 60
    # Angle is in degrees counter clockwise
    im_rotated = im.rotate(angle=theta)
Image.save(fp: StrOrBytesPath | IO[bytes], format: str | None = None, **params: Any) None[source]

指定されたファイル名で画像を保存します。形式が指定されていない場合、使用する形式は、可能であればファイル名拡張子から決定されます。

キーワードオプションを使用して、ライターに追加の指示を与えることができます。ライターがオプションを認識しない場合、それは黙って無視されます。利用可能なオプションについては、各ライターの画像形式のドキュメントで説明されています。

ファイル名の代わりにファイルオブジェクトを使用できます。この場合、必ず形式を指定する必要があります。ファイルオブジェクトは、seektell、およびwriteメソッドを実装し、バイナリモードで開かれている必要があります。

パラメータ
  • fp – ファイル名(文字列)、os.PathLikeオブジェクト、またはファイルオブジェクト。

  • format – オプションの形式上書き。省略した場合、使用する形式はファイル名拡張子から決定されます。ファイル名の代わりにファイルオブジェクトを使用した場合は、このパラメーターを常に使用する必要があります。

  • params – イメージライターへの追加パラメーター。

戻り値

なし

例外
  • ValueError – 出力形式をファイル名から決定できなかった場合。これを解決するには、formatオプションを使用してください。

  • OSError – ファイルを書き込めなかった場合。ファイルは作成され、部分的なデータが含まれている可能性があります。

Image.seek(frame: int) None[ソース]

このシーケンスファイル内の指定されたフレームにシークします。シーケンスの末尾を超えてシークすると、メソッドはEOFError例外を発生させます。シーケンスファイルを開くと、ライブラリは自動的にフレーム0にシークします。

tell()を参照してください。

定義されている場合、n_framesは利用可能なフレーム数を指します。

パラメータ

frame – フレーム番号。0から始まります。

例外

EOFError – シーケンスの末尾を超えてシークしようとした場合。

Image.show(title: str | None = None) None[ソース]

この画像を表示します。このメソッドは主にデバッグ目的で使用されます。

このメソッドは、内部でPIL.ImageShow.show()を呼び出します。PIL.ImageShow.register()を使用して、デフォルトの動作を上書きできます。

画像は最初に一時ファイルに保存されます。デフォルトでは、PNG形式になります。

Unixでは、xdg-opendisplaygmeog、またはxvユーティリティのうち、見つかったものが使用されて画像が開かれます。

macOSでは、画像はネイティブのプレビューアプリケーションで開かれます。

Windowsでは、画像は標準のPNG表示ユーティリティで開かれます。

パラメータ

title – 可能であれば、画像ウィンドウに使用するオプションのタイトル。

Image.split() tuple[Image, ...][ソース]

この画像を個々のバンドに分割します。このメソッドは、画像から個々の画像バンドのタプルを返します。たとえば、「RGB」画像を分割すると、元のバンド(赤、緑、青)の1つのコピーをそれぞれ含む3つの新しい画像が作成されます。

1つのバンドのみが必要な場合は、getchannel()メソッドの方が便利で高速です。

戻り値

バンドを含むタプル。

Image.tell() int[ソース]

現在のフレーム番号を返します。seek()を参照してください。

定義されている場合、n_framesは利用可能なフレーム数を指します。

戻り値

フレーム番号。0から始まります。

Image.thumbnail(size: tuple[float, float], resample: Resampling = Resampling.BICUBIC, reducing_gap: float | None = 2.0) None[ソース]

この画像をサムネイルにします。このメソッドは、画像を指定されたサイズを超えないサムネイルバージョンを含むように変更します。このメソッドは、画像の縦横比を維持するための適切なサムネイルサイズを計算し、ファイルリーダーを構成するためにdraft()メソッドを呼び出し(該当する場合)、最後に画像のサイズを変更します。

この関数は、Imageオブジェクトをインプレースで変更することに注意してください。フル解像度画像も使用する必要がある場合は、このメソッドを元の画像のcopy()に適用してください。

パラメータ
  • size – ピクセル単位のリクエストされたサイズ。2タプル: (幅、高さ)。

  • resample – オプションのリサンプリングフィルター。これは、Resampling.NEARESTResampling.BOXResampling.BILINEARResampling.HAMMINGResampling.BICUBIC、またはResampling.LANCZOSのいずれかになります。省略した場合、デフォルトはResampling.BICUBICです。(バージョン2.5.0より前は、Resampling.NEARESTでした)。フィルターを参照してください。

  • reducing_gap – 画像のリサイズを2段階で行うことで最適化を適用します。まず、reduce() または JPEG 画像の場合は draft() を使用して、画像を整数倍で縮小します。次に、通常のリサンプリングを使用してリサイズします。最後のステップでは、サイズが reducing_gap 倍以上変化します。reducing_gap は None (最初のステップを実行しない) または 1.0 より大きい値にする必要があります。reducing_gap が大きいほど、結果はフェアなリサンプリングに近づきます。reducing_gap が小さいほど、リサイズは高速になります。reducing_gap が 3.0 以上の場合は、ほとんどの場合、結果はフェアなリサンプリングと区別できません。デフォルト値は 2.0 です (多くのケースでより高速でありながら、フェアなリサンプリングに非常に近い)。

戻り値

なし

Image.tobitmap(name: str = 'image') bytes[ソース]

画像を X11 ビットマップに変換して返します。

注記

このメソッドは、モード "1" の画像でのみ動作します。

パラメータ

name – ビットマップ変数に使用する名前の接頭辞。

戻り値

X11 ビットマップを含む文字列。

例外

ValueError – モードが "1" でない場合

Image.tobytes(encoder_name: str = 'raw', *args: Any) bytes[ソース]

画像をバイトオブジェクトとして返します。

警告

このメソッドは、内部ストレージから生の画像データを返します。圧縮された画像データ (例: PNG、JPEG) の場合は、メモリ内データ用に BytesIO パラメータを指定して save() を使用してください。

パラメータ
  • encoder_name

    使用するエンコーダー。デフォルトは、標準の "raw" エンコーダーを使用することです。

    C エンコーダーのリストは、_imaging.c の関数配列の codec セクションにあります。Python エンコーダーは、関連するプラグイン内で登録されます。

  • args – エンコーダーへの追加引数。

戻り値

bytes オブジェクト。

Image.transform(size: tuple[int, int], method: Transform | ImageTransformHandler | SupportsGetData, data: Sequence[Any] | None = None, resample: int = Resampling.NEAREST, fill: int = 1, fillcolor: float | tuple[float, ...] | str | None = None) Image[ソース]

この画像を変換します。このメソッドは、指定されたサイズで、元の画像と同じモードの新しい画像を作成し、指定された変換を使用してデータを新しい画像にコピーします。

パラメータ
  • size – ピクセル単位の出力サイズ。2タプル (幅、高さ) で指定します。

  • method

    変換メソッド。これは、Transform.EXTENT (矩形サブ領域を切り取る)、Transform.AFFINE (アフィン変換)、Transform.PERSPECTIVE (透視変換)、Transform.QUAD (四角形を長方形にマッピング)、または Transform.MESH (複数のソース四角形を1つの操作でマッピング) のいずれかです。

    ImageTransformHandler オブジェクトを指定することもできます。

    class Example(Image.ImageTransformHandler):
        def transform(self, size, data, resample, fill=1):
            # Return result
    

    一部の Transform メソッド用の ImageTransformHandler の実装は、ImageTransform に提供されています。

    method.getdata メソッドを持ち、新しい method 値と data 値を提供するタプルを返すオブジェクトを指定することもできます。

    class Example:
        def getdata(self):
            method = Image.Transform.EXTENT
            data = (0, 0, 100, 100)
            return method, data
    

  • data – 変換メソッドへの追加データ。

  • resample – オプションのリサンプリングフィルター。これは、Resampling.NEAREST (最近傍を使用)、Resampling.BILINEAR (2x2 環境での線形補間)、または Resampling.BICUBIC (4x4 環境での三次スプライン補間) のいずれかになります。省略した場合、または画像のモードが "1" または "P" の場合は、Resampling.NEAREST に設定されます。参照: フィルタ

  • fillmethodImageTransformHandler オブジェクトである場合、これはそれに渡される引数の1つです。それ以外の場合は使用されません。

  • fillcolor – 出力画像で変換の外側の領域に使用するオプションの塗りつぶし色。

戻り値

Imageオブジェクト。

Image.transpose(method: Transpose) Image[ソース]

画像の転置(90度単位での反転または回転)を行います。

パラメータ

methodTranspose.FLIP_LEFT_RIGHTTranspose.FLIP_TOP_BOTTOMTranspose.ROTATE_90Transpose.ROTATE_180Transpose.ROTATE_270Transpose.TRANSPOSE、または Transpose.TRANSVERSE のいずれか。

戻り値

この画像の反転または回転したコピーを返します。

Transpose.FLIP_LEFT_RIGHT メソッドを使用して、入力画像を反転します。

from PIL import Image

with Image.open("hopper.jpg") as im:

    # Flip the image from left to right
    im_flipped = im.transpose(method=Image.Transpose.FLIP_LEFT_RIGHT)
    # To flip the image from top to bottom,
    # use the method "Image.Transpose.FLIP_TOP_BOTTOM"
Image.verify() None[ソース]

ファイルの内容を検証します。ファイルから読み込まれたデータの場合、このメソッドは、画像データを実際にデコードせずに、ファイルが破損しているかどうかを判断しようとします。このメソッドで問題が見つかった場合は、適切な例外が発生します。このメソッドを使用した後に画像をロードする必要がある場合は、画像ファイルを再度開く必要があります。

Image.load() core.PixelAccess | None[ソース]

画像のストレージを割り当て、ピクセルデータをロードします。通常の場合、Imageクラスは最初にアクセスされたときに開かれた画像を自動的にロードするため、このメソッドを呼び出す必要はありません。

画像に関連付けられたファイルが Pillow によって開かれた場合、このメソッドはファイルを閉じます。例外は、画像に複数のフレームがある場合で、その場合はシーク操作のためにファイルが開いたままになります。詳細については、Pillow でのファイル処理を参照してください。

戻り値

画像アクセスオブジェクト。

戻り値の型:

PixelAccess

Image.close() None[ソース]

可能であれば、ファイルポインタを閉じます。

この操作により、画像のコアが破棄され、メモリが解放されます。画像データはその後使用できなくなります。

この関数は、複数のフレームを持つ画像、または load() メソッドでファイルが読み込まれて閉じられていない画像を閉じるために必要です。詳細については、Pillow でのファイル処理を参照してください。

画像属性

Image クラスのインスタンスには、次の属性があります。

Image.filename: str

ソースファイルのファイル名またはパス。ファクトリ関数 open で作成された画像のみに filename 属性があります。入力がファイルのようなオブジェクトの場合、filename 属性は空の文字列に設定されます。

Image.format: str | None

ソースファイルのファイル形式。ライブラリ自体で作成された画像(ファクトリ関数を使用するか、既存の画像でメソッドを実行することによって)の場合、この属性は None に設定されます。

Image.mode: str

画像モード。これは、画像で使用されるピクセル形式を指定する文字列です。一般的な値は、「1」、「L」、「RGB」、または「CMYK」です。完全なリストについては、モードを参照してください。

Image.size: tuple[int]

画像のサイズ(ピクセル単位)。サイズは、2 タプル (幅、高さ) で指定されます。

Image.width: int

画像の幅(ピクセル単位)。

Image.height: int

画像の高さ(ピクセル単位)。

Image.palette: PIL.ImagePalette.ImagePalette | None

カラーパレットテーブル(存在する場合)。モードが「P」または「PA」の場合、これは ImagePalette クラスのインスタンスである必要があります。それ以外の場合は、None に設定する必要があります。

Image.info: dict

画像に関連付けられたデータを保持する辞書。この辞書は、ファイルハンドラがファイルから読み取られたさまざまな非画像情報を渡すために使用されます。詳細については、さまざまなファイルハンドラのドキュメントを参照してください。

ほとんどのメソッドは、新しい画像を返すときに辞書を無視します。キーが標準化されていないため、メソッドが操作によって辞書が影響を受けるかどうかを判断することはできません。後で情報が必要な場合は、open メソッドから返された info 辞書への参照を保持してください。

特に明記されていない限り、この辞書はファイルの保存には影響しません。

Image.is_animated: bool

この画像に複数のフレームがある場合は True、それ以外の場合は False

この属性は、アニメーション画像をサポートする画像プラグインによってのみ定義されます。プラグインは、指定された形式がアニメーション画像をサポートしている場合でも、アニメーション画像の読み込みをサポートしていない場合は、この属性を未定義のままにする場合があります。

この属性がすべての画像に存在するわけではないため、getattr(image, "is_animated", False) を使用して、Pillow が形式に関係なく画像の複数のフレームを認識しているかどうかを確認してください。

参考

n_frames, seek() and tell()

Image.n_frames: int

この画像のフレーム数。

この属性は、アニメーション画像をサポートする画像プラグインによってのみ定義されます。プラグインは、指定された形式がアニメーション画像をサポートしている場合でも、アニメーション画像の読み込みをサポートしていない場合は、この属性を未定義のままにする場合があります。

この属性はすべての画像に存在するわけではないため、getattr(image, "n_frames", 1) を使用して、画像形式に関係なく、Pillowが認識しているフレーム数を確認してください。

参考

is_animated, seek(), そして tell()

Image.has_transparency_data

画像が、アルファチャンネル、アルファチャンネルを持つパレット、またはinfo辞書の "transparency" キーのいずれかの形式で透明度データを持っているかどうかを判断します。

画像内に表示される値がすべて不透明である場合、画像はまだ塗りつぶされているように見える可能性があります。

戻り値

ブール値です。

クラス

class PIL.Image.Exif[ソース]

ベース: MutableMapping

このクラスは、EXIF画像データへの読み取りおよび書き込みアクセスを提供します。

from PIL import Image
im = Image.open("exif.png")
exif = im.getexif()  # Returns an instance of this class

情報の読み取り、書き込み、イテレーション、または削除が可能です。

print(exif[274])  # 1
exif[274] = 2
for k, v in exif.items():
  print("Tag", k, "Value", v)  # Tag 274 Value 2
del exif[274]

IFD0 を超える情報にアクセスするには、get_ifd() が辞書を返します。

from PIL import ExifTags
im = Image.open("exif_gps.jpg")
exif = im.getexif()
gps_ifd = exif.get_ifd(ExifTags.IFD.GPSInfo)
print(gps_ifd)

その他の IFD には、ExifTags.IFD.ExifExifTags.IFD.MakernoteExifTags.IFD.Interop、および ExifTags.IFD.IFD1 があります。

ExifTags には、データに名前を提供するための enum クラスもあります。

print(exif[ExifTags.Base.Software])  # PIL
print(gps_ifd[ExifTags.GPS.GPSDateStamp])  # 1999:99:99 99:99:99
bigtiff = False
endian: str | None = None
get_ifd(tag: int) dict[int, Any][ソース]
hide_offsets() None[ソース]
load(data: bytes) None[ソース]
load_from_fp(fp: IO[bytes], offset: int | None = None) None[ソース]
tobytes(offset: int = 8) bytes[ソース]
class PIL.Image.ImagePointHandler[ソース]

point() とともに使用する点変換によって、mixin として使用されます。

class PIL.Image.ImagePointTransform(scale: float, offset: float)[ソース]

8ビットを超えるシングルバンド画像の場合、point() とともに使用され、値に scale が乗算され、offset が追加されるアフィン変換を表します。

class PIL.Image.ImageTransformHandler[ソース]

transform() とともに使用する幾何学的変換によって、mixin として使用されます。

プロトコル

class PIL.Image.SupportsArrayInterface(*args, **kwargs)[ソース]

ベース: Protocol

__array_interface__ 辞書を持つオブジェクト。

class PIL.Image.SupportsGetData(*args, **kwargs)[ソース]

ベース: Protocol

定数

PIL.Image.NONE
PIL.Image.MAX_IMAGE_PIXELS

24ビット(3bpp)画像で約0.25GBとなる89,478,485に設定されています。使用方法の詳細については、open()を参照してください。

PIL.Image.WARN_POSSIBLE_FORMATS

falseに設定されています。trueの場合、画像の識別ができないときに、データの読み込みを試みた形式から警告が発生します。

転置メソッド

Image.transpose()メソッドの使用を指定するために使用します。

class PIL.Image.Transpose(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[ソース]
FLIP_LEFT_RIGHT = 0
FLIP_TOP_BOTTOM = 1
ROTATE_180 = 3
ROTATE_270 = 4
ROTATE_90 = 2
TRANSPOSE = 5
TRANSVERSE = 6

変換メソッド

Image.transform()メソッドの使用を指定するために使用します。

class PIL.Image.Transform[ソース]
AFFINE

アフィン変換

EXTENT

矩形サブ領域を切り抜きます

PERSPECTIVE

パースペクティブ変換

QUAD

四角形を矩形にマッピングします

MESH

複数のソース四角形を1つの操作でマッピングします

リサンプリングフィルター

詳細については、フィルターを参照してください。

class PIL.Image.Resampling(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[ソース]
BICUBIC = 3
BILINEAR = 2
BOX = 4
HAMMING = 5
LANCZOS = 1
NEAREST = 0

ディザリングモード

convert()メソッドとquantize()メソッドに使用するディザリング方法を指定するために使用します。

class PIL.Image.Dither[ソース]
NONE

ディザリングなし

ORDERED

未実装

RASTERIZE

未実装

FLOYDSTEINBERG

フロイド-スタインバーグディザリング

パレット

convert()メソッドに使用するパレットを指定するために使用します。

class PIL.Image.Palette(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[ソース]
ADAPTIVE = 1
WEB = 0

量子化メソッド

quantize()メソッドに使用する量子化メソッドを指定するために使用します。

class PIL.Image.Quantize[ソース]
MEDIANCUT

メディアンカット。RGBA画像を除くデフォルトのメソッドです。このメソッドはRGBA画像をサポートしていません。

MAXCOVERAGE

最大カバレッジ。このメソッドはRGBA画像をサポートしていません。

FASTOCTREE

高速な Octree。RGBA 画像のデフォルトメソッド。

LIBIMAGEQUANT

libimagequant

PIL.features.check_feature()feature="libimagequant" で使用してサポートを確認してください。