ホームページ  >  記事  >  バックエンド開発  >  FastAPI で NumPy 配列を画像として表示するにはどうすればよいですか?

FastAPI で NumPy 配列を画像として表示するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 03:42:02417ブラウズ

How to Display NumPy Arrays as Images in FastAPI?

FastAPI で NumPy 配列を画像としてレンダリングする

概要

FastAPI は、API を構築するための人気のある Python フレームワークです。これは、HTTP リクエストとレスポンスを処理する便利な方法を提供します。この記事では、FastAPI で NumPy 配列を画像としてレンダリングする方法を説明します。

オプション 1: 画像をバイトとして返す

PIL を使用する

<code class="python">from PIL import Image
from io import BytesIO

@app.get("/image", response_class=Response)
def get_image():
    arr = np.zeros((512, 512, 3), dtype=np.uint8)
    arr[0:256, 0:256] = [255, 0, 0]  # Red patch in the upper left
    im = Image.fromarray(arr)

    with io.BytesIO() as buf:
        im.save(buf, format='PNG')
        im_bytes = buf.getvalue()

    headers = {'Content-Disposition': 'inline; filename="test.png"'}
    return Response(im_bytes, headers=headers, media_type='image/png')</code>

OpenCV を使用する

<code class="python">import cv2

@app.get("/image", response_class=Response)
def get_image():
    arr = np.zeros((512, 512, 3), dtype=np.uint8)
    arr[0:256, 0:256] = [255, 0, 0]  # Red patch in the upper left
    arr = cv2.cvtColor(arr, cv2.COLOR_RGB2BGR)  # OpenCV uses BGR

    success, im = cv2.imencode('.png', arr)
    headers = {'Content-Disposition': 'inline; filename="test.png"'}
    return Response(im.tobytes(), headers=headers, media_type='image/png')</code>

オプション 2: 画像を JSON エンコードされた NumPy 配列として返す

注: このオプションは、画像を JavaScript オブジェクトとして変換して送信する場合にのみ使用します。

PIL の使用

<code class="python">import json

@app.get("/image")
def get_image():
    im = Image.open('test.png')
    arr = np.asarray(im)
    return json.dumps(arr.tolist())</code>

OpenCV の使用

<code class="python">@app.get("/image")
def get_image():
    arr = cv2.imread('test.png')
    return json.dumps(arr.tolist())</code>

以上がFastAPI で NumPy 配列を画像として表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。