Pythonで画像をBase64文字列に変換する

スポンサーリンク

Pythonで画像をBase64文字列に変換してみます。

Base64とは、データを64種類の印字可能な英数字のみを用いて、印刷可能な ASCII 文字列形式でバイナリデータを扱うためのエンコード(一定の規則に基づいて変換する)方式。ASCII形式のみをサポートするメディアを介してデータを転送するために使用される。

なお、今回はBase64文字列に変換するためにBase64モジュールを用います。このモジュール・ライブラリは、Pythonの標準ライブラリとなっていますので、事前にインストールする必要はありません。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■画像を用意する

Pythonで画像をBase64文字列に変換してみますが、その前に画像ファイルを用意します。

今回は「C:\Users\user_\test(フォルダパス)」内に「mountain.png」というpng形式の画像ファイルを用意しました。なおこの画像ファイルは、著作権フリーのPixabay(https://pixabay.com/ja/)の画像ファイルを利用しています。

■画像をBase64文字列に変換する

画像ファイルの用意ができましたので、画像をBase64文字列に変換するスクリプトを書いていきます。

■コード

import base64

with open(r"C:\Users\user_\test\mountain.png","rb") as imagefile:
    b64_string = base64.b64encode(imagefile.read())

print(b64_string)

importでbase64モジュールを呼び出します。その後with構文とopen()関数を用います。open()関数の括弧内には、第1の引数,パラメータとして今回用意した画像ファイルの名前と場所を渡します。次に第2の引数,パラメータとして「”rb”」を渡します。これでrbモードが設定され、バイナリファイルの読み込みが可能となります。そしてopen()関数で開いたもの(ファイルオブジェクト)をasを用いて、imagefile変数に格納します。

格納後、b64_stringという変数を定義し、その中でbase64.b64encode()を用います。括弧内に引数,パラメータとして、imagefile変数を渡しますが、この時にread()を用いてimagefile変数内の情報を読み込んで渡します。これで画像ファイルがBase64文字列に変換されます。変数されたものが、b64_string変数に格納されます。

最後にb64_string変数内の情報をprint()で出力させます。

■実行・検証

変更後、スクリプトを「64_Imagefile.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、今回用意したpng形式の画像ファイルをBase64モジュールを用いてBase64文字列に変換。変換されたBase64文字列をprint()で出力させることができました。

コメント

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