FastAPI で NumPy 配列を画像として表示する方法
問題:
画像を表す NumPy 配列。レンダリングしようとすると白い正方形として表示されます。
解決策:
オプション 1: 画像をバイトとして返す
カスタム Response クラスを使用して、次の手順に従います:
- ディスクからイメージをロードするか、PIL または OpenCV を使用してメモリ内の NumPy 配列をイメージに変換します。
- save() メソッドまたは imencode() メソッドをそれぞれ使用して、画像を BytesIO バッファに保存します。
- Content-Disposition ヘッダーを設定して、インライン表示またはダウンロードを指定します。
- media_type が適切な画像形式 (例: 'image/png') に設定された応答内の画像バイト。
オプション 2: 画像を JSON エンコードされた NumPy 配列として返す
このオプションはブラウザで画像を表示するのには理想的ではありませんが、NumPy 配列を JSON としてエンコードし、クライアント側でデコードして画像に戻すことができます。
- tolist() メソッドを使用して、NumPy 配列をリストに変換します。
- リストを JSON としてエンコードし、レスポンスで返します。
- クライアント側で、JSON 文字列をデコードして NumPy 配列に戻します。
注:
- どちらのオプションでも、Content-Disposition ヘッダーの設定が重要です。
- NumPy 配列がメモリにロードされ、単一の応答で効率的に返せる場合、StreamingResponse は必要ありません。
以上がFastAPI で NumPy 配列を画像としてレンダリングする方法: 白い四角の問題のトラブルシューティング?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。