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:
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="test.png"'} 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="test.png"'} return Response(im.tobytes(), headers=headers, media_type='image/png')</code>
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!