Maison >développement back-end >Tutoriel Python >Comment afficher les tableaux NumPy sous forme d'images dans FastAPI ?

Comment afficher les tableaux NumPy sous forme d'images dans FastAPI ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-24 03:42:02550parcourir

How to Display NumPy Arrays as Images in FastAPI?

Rendu le tableau NumPy sous forme d'image dans FastAPI

Introduction

FastAPI est un framework Python populaire pour la création d'API. Il fournit un moyen pratique de gérer les requêtes et les réponses HTTP. Cet article montre comment restituer des tableaux NumPy sous forme d'images dans FastAPI.

Option 1 : renvoyer l'image en octets

À l'aide de PIL

<code class="python">from PIL import Image
from io import BytesIO

@app.get("/image", response_class=Response)
def get_image():
    arr = np.zeros((512, 512, 3), dtype=np.uint8)
    arr[0:256, 0:256] = [255, 0, 0]  # Red patch in the upper left
    im = Image.fromarray(arr)

    with io.BytesIO() as buf:
        im.save(buf, format='PNG')
        im_bytes = buf.getvalue()

    headers = {'Content-Disposition': 'inline; filename="test.png"'}
    return Response(im_bytes, headers=headers, media_type='image/png')</code>

À l'aide d'OpenCV

<code class="python">import cv2

@app.get("/image", response_class=Response)
def get_image():
    arr = np.zeros((512, 512, 3), dtype=np.uint8)
    arr[0:256, 0:256] = [255, 0, 0]  # Red patch in the upper left
    arr = cv2.cvtColor(arr, cv2.COLOR_RGB2BGR)  # OpenCV uses BGR

    success, im = cv2.imencode('.png', arr)
    headers = {'Content-Disposition': 'inline; filename="test.png"'}
    return Response(im.tobytes(), headers=headers, media_type='image/png')</code>

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

Remarque : Utilisez cette option uniquement pour convertir et envoyer l'image en tant qu'objet JavaScript.

Utiliser PIL

<code class="python">import json

@app.get("/image")
def get_image():
    im = Image.open('test.png')
    arr = np.asarray(im)
    return json.dumps(arr.tolist())</code>

Utiliser OpenCV

<code class="python">@app.get("/image")
def get_image():
    arr = cv2.imread('test.png')
    return json.dumps(arr.tolist())</code>

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