Heim  >  Artikel  >  Backend-Entwicklung  >  Wie rendere ich ein NumPy-Array als Bild in FastAPI: Fehlerbehebung beim Problem mit weißen Quadraten?

Wie rendere ich ein NumPy-Array als Bild in FastAPI: Fehlerbehebung beim Problem mit weißen Quadraten?

Linda Hamilton
Linda HamiltonOriginal
2024-10-24 00:30:02430Durchsuche

How to Render NumPy Array as Image in FastAPI: Troubleshooting White Square Issue?

So zeigen Sie NumPy Array als Bild in FastAPI an

Problem:

Obwohl ein NumPy-Array, das ein Bild darstellt. Beim Versuch, es zu rendern, erscheint es als weißes Quadrat.

Lösung:

Option 1: Bild als Bytes zurückgeben

Führen Sie unter Verwendung einer benutzerdefinierten Antwortklasse die folgenden Schritte aus:

  1. Laden Sie das Bild von der Festplatte oder konvertieren Sie ein NumPy-Array im Speicher mithilfe von PIL oder OpenCV in ein Bild.
  2. Speichern Sie das Bild mit der Methode save() bzw. imencode() in einem BytesIO-Puffer.
  3. Legen Sie den Content-Disposition-Header fest, um die Inline-Anzeige oder das Herunterladen anzugeben.
  4. Gibt die zurück Bildbytes in einer Antwort, wobei der Medientyp auf das entsprechende Bildformat eingestellt ist (z. B. „image/png“).

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

Diese Option ist nicht ideal für die Anzeige von Bildern im Browser, ermöglicht Ihnen aber, das NumPy-Array als JSON zu kodieren und auf der Clientseite wieder in ein Bild zu dekodieren.

  1. Konvertieren Sie das NumPy-Array mit der tolist()-Methode in eine Liste umwandeln.
  2. Kodieren Sie die Liste als JSON und geben Sie sie in einer Antwort zurück.
  3. Dekodieren Sie auf der Clientseite die JSON-Zeichenfolge zurück in ein NumPy-Array und verwenden Sie PIL oder OpenCV, um daraus ein Bild zu erstellen.

Hinweis:

  • Für beide Optionen ist das Festlegen des Content-Disposition-Headers entscheidend zum Anzeigen des Bildes im Browser.
  • StreamingResponse ist nicht erforderlich, wenn das NumPy-Array in den Speicher geladen wird und effizient in einer einzigen Antwort zurückgegeben werden kann.

Das obige ist der detaillierte Inhalt vonWie rendere ich ein NumPy-Array als Bild in FastAPI: Fehlerbehebung beim Problem mit weißen Quadraten?. 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