Heim  >  Artikel  >  Backend-Entwicklung  >  Wie rendern Sie ein NumPy-Bildarray in FastAPI?

Wie rendern Sie ein NumPy-Bildarray in FastAPI?

Linda Hamilton
Linda HamiltonOriginal
2024-10-24 02:40:02754Durchsuche

How Do You Render a NumPy Image Array in FastAPI?

NumPy-Array in FastAPI rendern

Während der Artikel „Wie gebe ich mit FastAPI ein NumPy-Array als Bild zurück?“ Obwohl es nützliche Informationen liefert, geht es nicht direkt auf das Problem der Anzeige des Bildes ein. Um Abhilfe zu schaffen, gehen wir tiefer in die zugrunde liegenden Techniken ein:

Option 1: Bild als Bytes zurückgeben

Diese Methode beinhaltet die Konvertierung der Bilddaten in Bytes mithilfe von Bibliotheken wie PIL oder OpenCV. Die resultierenden Bytes können dann als benutzerdefinierte Antwort mit entsprechendem Inhaltstyp und entsprechenden Headern bereitgestellt werden.

Verwendung von 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>

Verwendung von 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>

Option 2: Bild als JSON-kodiertes NumPy-Array zurückgeben

Während dieser Ansatz nicht für die Anzeige von Bildern empfohlen wird, kann er verwendet werden, um das Bild in ein JSON-kodiertes Bild zu konvertieren Numpy-Array, das später auf der Clientseite wieder in ein Bild konvertiert werden kann.

Verwendung von 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>

Verwendung von 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>

Um das Bild mit dieser Methode anzuzeigen, müssten Sie die empfangenen Bytes oder JSON-codierten Daten auf der Clientseite wieder in ein Bildformat konvertieren.

Das obige ist der detaillierte Inhalt vonWie rendern Sie ein NumPy-Bildarray in FastAPI?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn