OpenCV/Pillow – 画像を base64 形式に変換する方法

OpenCV/Pillow – 画像を base64 形式に変換する方法

概要

OpenCV または Pillow で読み込んだ画像を base64 文字列に変換する方法について解説します。

Advertisement

Pillow -> base64

PIL 形式の画像を base64 の文字列に変換するには以下のようにします。

sample.jpg

In [1]:
import base64
from io import BytesIO

from IPython.display import HTML, display
from PIL import Image


def pil_to_base64(img):
    buffer = BytesIO()
    img.save(buffer, format="jpeg")
    img_str = base64.b64encode(buffer.getvalue()).decode("ascii")

    return img_str


# 画像を読み込む。
img = Image.open("sample.jpg")
img_str = pil_to_base64(img)

# インライン画像として表示して確認する。
img_tag = f'<img src="data:image/jpeg;base64,{img_str}">'
display(HTML(img_tag))

OpenCV

OpenCV の ndarray 形式の画像を base64 の文字列に変換するには以下のようにします。

In [2]:
import base64

import cv2
from IPython.display import HTML, display


def cv_to_base64(img):
    _, encoded = cv2.imencode(".jpg", img)
    img_str = base64.b64encode(encoded).decode("ascii")

    return img_str


# 画像を読み込む。
img = cv2.imread("sample.jpg")
img_str = cv_to_base64(img)

# インライン画像として表示して確認する。
img_tag = f'<img src="data:image/jpeg;base64,{img_str}">'
display(HTML(img_tag))