Comment restituer un tableau d'images NumPy dans FastAPI ?

Linda Hamilton
Libérer: 2024-10-24 02:40:02
original
827 Les gens l'ont consulté

How Do You Render a NumPy Image Array in FastAPI?

Rendu d'un tableau NumPy dans FastAPI

Alors que l'article "Comment renvoyer un tableau numpy sous forme d'image à l'aide de FastAPI ?" fournit des informations utiles, il n’aborde pas directement la question de l’affichage de l’image. Pour remédier à cela, approfondissons les techniques sous-jacentes :

Option 1 : renvoyer l'image en octets

Cette méthode consiste à convertir les données de l'image en octets à l'aide de bibliothèques comme PIL ou OpenCV. Les octets résultants peuvent ensuite être servis comme réponse personnalisée avec le type de contenu et les en-têtes appropriés.

Utilisation de 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=&quot;test.png&quot;'}
    return Response(im_bytes, headers=headers, media_type='image/png')</code>
Copier après la connexion

Utilisation d'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=&quot;test.png&quot;'}
    return Response(im.tobytes(), headers=headers, media_type='image/png')</code>
Copier après la connexion

Option 2 : renvoyer l'image sous forme de tableau NumPy codé JSON

Bien que cette approche ne soit pas recommandée pour l'affichage d'images, elle peut être utilisée pour convertir l'image en un fichier codé JSON. tableau numpy, qui peut ensuite être reconverti en image côté client.

Utilisation de 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>
Copier après la connexion

Utilisation d'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>
Copier après la connexion

Pour afficher l'image à l'aide de cette méthode, vous devrez reconvertir les octets reçus ou les données codées en JSON en un format d'image côté client.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal