🐍

Python FastAPIを使用して画像のアップロードと表示を行う方法

2024/02/13に公開

記事概要:

PythonのWebフレームワークであるFastAPIを使用して、画像のアップロードと表示を行う方法について解説します。このガイドでは、FastAPIを使用して画像をバイナリデータとして保存し、それらの画像を表示する方法を示します。

画像のアップロード

FastAPIを使用して画像をアップロードするためには、POSTリクエストを受け付け、UploadFileを使用して画像ファイルを受け取ります。以下の例では、/Contents/Createエンドポイントが画像のアップロードを処理しています。

python
@app.post("/Contents/Create")
async def Create(
    imagefile: Optional[UploadFile] = File(None),
    ):
    # 画像データをバイナリ形式で取得
    image_data = await imagefile.read()

    # その他のデータと共にデータベースに保存する処理

    return {"status": "success"}

※データベース保存処理についてはまだ執筆してないので待ってるよって方いればLikeしてくださるとモチベーションに繋がります

画像の表示

FastAPIを使用して保存された画像を表示するためには、GETリクエストを処理し、データベースからバイナリ形式で保存した画像データを取得します。取得した画像データはBase64エンコードされ、HTMLページに埋め込み表示させます。以下の例では、/Contents/Indexエンドポイントで画像データのGET処理をしています。

python
@app.get("/Contents/Index")
def Index(request: Request):
    db = SessionLocal()
    contents = db.query(PostedImages).all()

    formatted_contents = []
    for content in contents:
        # 画像データをBase64エンコードしてフォーマットする
        image_data = base64.b64encode(content.ImageData).decode("utf-8")
        formatted_content = {
            "image_data": image_data,
        }
        formatted_contents.append(formatted_content)

    return view.TemplateResponse('/Contents/Index.html', {'request': request, 'contents': formatted_contents})

まとめ

この記事では、Python FastAPIを使用して画像のアップロードと表示を行う方法を解説しました。FastAPIを使用することで、簡潔かつ効率的なWebアプリケーションを構築することができます。

Discussion