Python

【Python】画像ファイルを読み込んでBase64にエンコードする

WEBサーバ上に保存された画像ファイルをPythonで読込み、Base64にエンコードしてからブラウザへ渡して画面に表示する。

Base64で渡すことで、ブラウザ側のCORS制約とかを気にしなくてよくなる。

HTML

<img id="imgSample" src="{{imgSample}}">

画像ファイルのエンコード

import render_template
import base64

def encodeBase64():
    
    #画像ファイルをバイナリで開く
    with open(filePath, "rb") as f:
        #ファイルの内容を読込み、Base64にエンコードする
        bImgBase64 = base64.b64encode(f.read())

    #バイナリを文字列に変換する
    strImgBase64 = str(bImgBase64)
    #文字列変換時の先頭の「b'」と末尾の「'」を取り除く
    strImgBase64 = strImgBase64[2: len(strImgBase64) - 1]
    #PNG形式のヘッダを付加する
    imgSample = "data:image/png;base64," + strImgBase64

    #テンプレートにbase64の画像データを渡す
    return render_template('xxx/yyy.html', imgSample=imgSample)
 

ローカルから画像をWEBサーバにアップロードした後に表示する処理とかにも一応使える。