Maison  >  Article  >  développement back-end  >  Comment restituer un tableau d’images NumPy dans FastAPI ?

Comment restituer un tableau d’images NumPy dans FastAPI ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-24 02:40:02754parcourir

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>

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>

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>

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>

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!

Déclaration:
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