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

DDD
Freigeben: 2024-10-24 05:47:02
Original
545 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!