1. ホーム
  2. python

[解決済み] PILでPNG画像を文字列に書き出すには?

2022-05-18 09:28:23

質問

画像は PIL . これをメモリ上の文字列に保存するにはどうしたらよいでしょうか? その Image.save() メソッドはファイルを必要とします。

このような画像を複数枚ディクショナリに保存しておきたいのですが。

どのように解決するのですか?

あなたは BytesIO クラスを使って、ファイルのように振舞う文字列のラッパーを取得することができます。このクラスは BytesIO オブジェクトはファイルと同じインタフェースを提供しますが、 内容はメモリ内にのみ保存されます。

import io

with io.BytesIO() as output:
    image.save(output, format="GIF")
    contents = output.getvalue()

出力形式は明示的に format パラメータで明示的に指定する必要があります。そうでなければ、PILはそれを自動的に検出しようとしたときにエラーを発生させます。

ファイルから画像を読み込んだ場合、その画像には format パラメータに元のファイル形式が含まれているので、この場合は format=image.format .

が導入される前の古いPython 2のバージョンでは io モジュールが導入される前の古い Pyon 2 では StringIO モジュールを使うことになります。