webdevqa.jp.net

画像「モード」一覧

PIL(および この質問 に関連)を確認すると、イメージモードの包括的なリストはどこで入手できますか? "RGB"、 "RGBX"が表示されます。PILドキュメントに表示されていないのに、コードに "BGRX"が含まれています。たとえば、Windows API呼び出しを操作するときに、どれがPILがサポートしているのか、どの適切なモードを選択するのかをどのように確認できますか?

基本的に私は画像モードについてほとんど知らないので、それを魔法のように機能させるためにどのような文字を入れるかだけではなく、もっと学びたいと思っています。

36
Claudiu

Pillowには2つの異なる概念があり、混乱を招くように似た名前になっています。

「モード」

これらは https://pillow.readthedocs.io/en/latest/handbook/concepts.html#modes にリストされています。

それらのドキュメントによると:

画像のモードは、画像内のピクセルのタイプと深度を定義します。

この種類の「モード」は、Imageの_.mode_属性を介して公開され、.convert()メソッドを介して変更でき、modeパラメーターを受け取るメソッドに渡すことができます。これらは「ローモード」と同じではありません。

「生モード」

これらは内部的に rawデコーダー によって使用され、非圧縮データを画像ファイルからPIL Imageオブジェクトが理解できる形式に変換します。 「モード」の数倍の「rawモード」があり、画像のピクセルのタイプ(カラーまたはグレースケール)とビット深度だけでなく、ファイル内のレイアウトについても情報を伝えます。たとえば、Rawモード_RGB;L_は意味として文書化されています "24ビットトゥルーカラー、ラインインターリーブ(最初はすべて赤のピクセル、次にすべて緑のピクセル、最後はすべて青のピクセル)。"

上記のドキュメント(および古い PILドキュメント )にも記載されているように、Rawモードのリストは_Unpack.c_にあります。リストはファイルの終わり近くにあります。

Pillowの現在のマスターブランチからの_Unpack.c_: https://github.com/python-pillow/Pillow/blob/master/src/libImaging/Unpack.c

PILの最終リリースからの_Unpack.c_: http://svn.effbot.org/public/tags/pil-1.1.7/libImaging/Unpack.c

27
Mark Ransom