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 サイトの他の関連記事を参照してください。