首頁  >  文章  >  後端開發  >  如何在 FastAPI 中渲染 NumPy 映像陣列?

如何在 FastAPI 中渲染 NumPy 映像陣列?

Linda Hamilton
Linda Hamilton原創
2024-10-24 02:40:02754瀏覽

How Do You Render a NumPy Image Array in FastAPI?

在FastAPI 渲染NumPy 陣列

而文章「如何使用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:將影像傳回選項編碼的NumPy 數組

雖然不建議使用此方法顯示圖像,但它可以用於將圖像轉換為JSON 編碼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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn