Pythonで生成した画像をウェブページに表示

Pythonで画像を生成するにはPillowを使うと簡単です。
これをウェブページに表示したいと思います。
調べると次のページが見つかりました。

pillowを使って生成した画像を、ファイルに保存せずにhtml表示【Django】 – Qiita(リンク切れ)

しかし、このままだとうまく動かない部分があり、またDjangoを使って説明している箇所がよく分かりませんでした。
少し修正したところ、うまくできたので、メモとして残しておきます。

macOS 10.14.6
Python 3.7
Google Chrome 77

#!/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
import sys
import io
from PIL import Image, ImageDraw
import base64

def get_base64():
  im = Image.new("RGB", (300, 200), "silver")
  draw = ImageDraw.Draw(im)
  draw.line((10, 10, 290, 190), fill="blue", width=2)
  buffer = io.BytesIO()
  im.save(buffer, format="PNG")
  b64 = base64.b64encode(buffer.getvalue()).decode()
  return b64

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
print("Content-Type: text/html; charset=utf-8")
print("")
print("<html>")
print("<body>")

b64 = get_base64()
print("<img src='data:image/png;base64," + b64 + "'>")

print("</body>")
print("</html>")

実行環境としてはMampを使っています。
ウェブページを表示する方法については「MampでPythonを使う方法 | You Look Too Cool」を参考にしてください。
画像を生成した後にBase64に変換しこれをimgタグにセットして表示します。

コメント

タイトルとURLをコピーしました