ホームページ  >  記事  >  バックエンド開発  >  FastAPIを使用してNumPy配列を画像として返す方法?

FastAPIを使用してNumPy配列を画像として返す方法?

DDD
DDDオリジナル
2024-10-24 05:47:02629ブラウズ

How to Return NumPy Arrays as Images Using FastAPI?

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

問題: FastAPI で NumPy 配列を画像として表示する

解決策:

FastAPI で NumPy 配列を画像として表示するには、主に 2 つのオプションがあります:

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

このアプローチには変換が含まれますPIL または OpenCV ライブラリのいずれかを使用して NumPy 配列をバイトに変換し、適切なヘッダーを持つカスタム レスポンスとしてバイトを返します。

PIL の使用:

<code class="python"># Convert NumPy array to bytes using PIL
from PIL import Image
import io

arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
buf = BytesIO()
im = Image.fromarray(arr)
im.save(buf, format='PNG')
im_bytes = buf.getvalue()

# Return bytes as a Response with appropriate headers
from fastapi import Response

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

OpenCV の使用:

<code class="python"># Convert NumPy array to bytes using OpenCV
import cv2

arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
arr = cv2.cvtColor(arr, cv2.COLOR_RGB2BGR)
success, im = cv2.imencode('.png', arr)

# Return bytes as a Response with appropriate headers
from fastapi import Response

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

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

このアプローチは表示目的には推奨されませんが、データ転送に使用できます。

PIL の使用:

<code class="python">import numpy as np
import json

# Convert NumPy array to JSON-encoded string
arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
json_data = json.dumps(arr.tolist())</code>

OpenCV の使用:

<code class="python">import numpy as np
import cv2
import json

# Convert NumPy array to JSON-encoded string
arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
json_data = json.dumps(arr.tolist()).replace('-1', '255')</code>

以上がFastAPIを使用してNumPy配列を画像として返す方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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