[Python]Base64のエンコードとデコード

2021年7月16日金曜日

Python

Rest APIを利用してファイルをダウンロードした場合にファイルがBase64形式の文字列で渡されるケースが多いかと思います。
本記事はPythonにおけるBase64のエンコード、デコード方法を記載します。



定義

始めに言葉の定義を記載します

エンコード

エンコードは、符号化ともいい、デジタルデータを一定の規則に従って、目的に応じた符号に変換することである。

デコード

デコード(decode)は、復号ともいい、エンコードの対義語。
エンコードした情報を元に戻すこと。復号する機能を「デコーダ」(decoder)という。

Base64

Base64は、データを64種類の印字可能な英数字のみを用いて、
それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。
MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。
具体的には、A–Z, a–z, 0–9 までの62文字と、記号2つ (+, /)、さらにパディング(余った部分を詰める)のための記号として = が用いられる。


本記事では、Base64にエンコードされたバイナリファイルをデコードする方法や、
その逆となるバイナリファイルをBase64にエンコードする方法を記載します。

Base64のエンコードとデコード


import base64

PNG_FILE = "/home/python_logo.png"
ENCODED_PNG_FILE = "/home/encoded_python_logo.png"

base64_bytes = ""

with open(PNG_FILE, mode='rb') as f:
    # base64にエンコードされたbytesを生成.
    base64_bytes = base64.b64encode(f.read())


with open(ENCODED_PNG_FILE, mode='wb') as f:
    # base64をデコードしPNGのbytesを生成.
    png_bytes = base64.b64decode(base64_bytes)
    f.write(png_bytes)
  
  

上記のコードはPNG画像をBase64にエンコードし、その後Base64をデコードして、encoded_python_logo.pngを保存しています。

当たり前ですが、エンコードする前の画像とデコードして生成した画像は同じとなります。

AIエンジニア向けフリーランスならここがおすすめです

まずは無料会員登録

プロフィール

自分の写真
製造業に勤務する傍ら、日々AIの技術動向を調査しブログにアウトプットしています。 AIに関するご相談やお仕事のご依頼はブログのお問い合わせフォームか以下のアドレスまでお気軽にお問い合わせください。 bhupb13511@yahoo.co.jp

カテゴリ

このブログを検索

ブログ アーカイブ

TeDokology