テクめも

プログラミング関連のちょっとしたTipsなどを書いています。

S3からファイルに保存せずに画像を読み込む

S3に保存した画像ファイルをプログラム中で使用したいシナリオを多いかと思います。

一度ファイルに保存して、保存したファイルを読み込む方法もありますが、保存せずに利用する方法を紹介したいと思います。

from io import BytesIO

import boto3
import numpy as np
from PIL import Image

s3 = boto3.resource("s3")
bucket = s3.Bucket("bucket-name")

# S3からオブジェクトを取得
obj = bucket.Object("image.jpg")
response = obj.get()
body = response["Body"].read()

# 画像データをNumpy形式に変換
image = Image.open(BytesIO(body))
image_array = np.asarray(image)