FastAPI で NumPy 画像配列をレンダリングするにはどうすればよいですか?
Oct 24, 2024 am 02:40 AMRendering NumPy Array in FastAPI
記事「FastAPI を使用して numpy 配列を画像として返す方法?」は有益な情報を提供しますが、画像の表示の問題に直接対処するものではありません。これを解決するために、基礎となる技術をさらに詳しく見てみましょう。
オプション 1: 画像をバイトとして返す
この方法では、PIL や OpenCV などのライブラリを使用して画像データをバイトに変換します。結果のバイトは、適切なコンテンツ タイプとヘッダーを持つカスタム レスポンスとして提供できます。
PIL の使用:
<code class="python">from PIL import Image import io @app.get('/image', response_class=Response) def get_image(): im = Image.open('test.png') with io.BytesIO() as buf: im.save(buf, format='PNG') im_bytes = buf.getvalue() headers = {'Content-Disposition': 'inline; filename=&quot;test.png&quot;'} 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 = cv2.imread('test.png', cv2.IMREAD_UNCHANGED) success, im = cv2.imencode('.png', arr) headers = {'Content-Disposition': 'inline; filename=&quot;test.png&quot;'} return Response(im.tobytes(), headers=headers, media_type='image/png')</code>
ログイン後にコピー
オプション 2: 画像を JSON エンコードされた NumPy 配列として返す
このアプローチは画像の表示には推奨されませんが、画像を JSON エンコードされた NumPy 配列に変換するために使用できます。 numpy 配列。後でクライアント側でイメージに変換できます。
PIL の使用:
<code class="python">from PIL import Image import numpy as np @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">import cv2 @app.get('/image') def get_image(): arr = cv2.imread('test.png', cv2.IMREAD_UNCHANGED) return json.dumps(arr.tolist())</code>
ログイン後にコピー
このメソッドを使用して画像を表示するには、受信したバイトまたは JSON でエンコードされたデータをクライアント側で画像形式に変換し直す必要があります。
以上がFastAPI で NumPy 画像配列をレンダリングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
2つのポイント博物館:すべての展示とそれらを見つける場所
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
2つのポイント博物館:すべての展示とそれらを見つける場所
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7126
9


Java チュートリアル
1534
14


Laravel チュートリアル
1256
25


PHP チュートリアル
1205
29


CakePHP チュートリアル
1153
46

