[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技術を中心にソースコード付きでご紹介します


Twitter

カテゴリ

このブログを検索

ブログ アーカイブ

TeDokology