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:
- Laden Sie das Bild von der Festplatte oder konvertieren Sie ein NumPy-Array im Speicher mithilfe von PIL oder OpenCV in ein Bild.
- Speichern Sie das Bild mit der Methode save() bzw. imencode() in einem BytesIO-Puffer.
- Legen Sie den Content-Disposition-Header fest, um die Inline-Anzeige oder das Herunterladen anzugeben.
- 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.
- Konvertieren Sie das NumPy-Array mit der tolist()-Methode in eine Liste umwandeln.
- Kodieren Sie die Liste als JSON und geben Sie sie in einer Antwort zurück.
- 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!