Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich NumPy-Arrays mithilfe von FastAPI als Bilder zurückgeben?

Wie kann ich NumPy-Arrays mithilfe von FastAPI als Bilder zurückgeben?

DDD
DDDOriginal
2024-10-24 05:47:02635Durchsuche

How to Return NumPy Arrays as Images Using FastAPI?

So rendern Sie ein NumPy-Array als Bild in FastAPI

Problem: Anzeigen eines NumPy-Arrays als Bild in FastAPI

Lösung:

Um ein NumPy-Array als Bild in FastAPI anzuzeigen, haben Sie zwei Hauptoptionen:

Option 1: Bild als Bytes zurückgeben

Dieser Ansatz beinhaltet die Konvertierung Zerlegen Sie das NumPy-Array mithilfe der PIL- oder OpenCV-Bibliothek in Bytes und geben Sie die Bytes dann als benutzerdefinierte Antwort mit den entsprechenden Headern zurück.

Verwendung von PIL:

<code class="python"># Convert NumPy array to bytes using PIL
from PIL import Image
import io

arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
buf = BytesIO()
im = Image.fromarray(arr)
im.save(buf, format='PNG')
im_bytes = buf.getvalue()

# Return bytes as a Response with appropriate headers
from fastapi import Response

headers = {'Content-Disposition': 'inline; filename="test.png"'}
return Response(im_bytes, headers=headers, media_type='image/png')</code>

Verwendung von OpenCV:

<code class="python"># Convert NumPy array to bytes using OpenCV
import cv2

arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
arr = cv2.cvtColor(arr, cv2.COLOR_RGB2BGR)
success, im = cv2.imencode('.png', arr)

# Return bytes as a Response with appropriate headers
from fastapi import Response

headers = {'Content-Disposition': 'inline; filename="test.png"'}
return Response(im.tobytes(), headers=headers, media_type='image/png')</code>

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

Dieser Ansatz wird für Anzeigezwecke jedoch nicht empfohlen kann zur Datenübertragung verwendet werden.

Verwendung von PIL:

<code class="python">import numpy as np
import json

# Convert NumPy array to JSON-encoded string
arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
json_data = json.dumps(arr.tolist())</code>

Verwendung von OpenCV:

<code class="python">import numpy as np
import cv2
import json

# Convert NumPy array to JSON-encoded string
arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
json_data = json.dumps(arr.tolist()).replace('-1', '255')</code>

Das obige ist der detaillierte Inhalt vonWie kann ich NumPy-Arrays mithilfe von FastAPI als Bilder zurückgeben?. 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