"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como retornar matrizes NumPy como imagens usando FastAPI?

Como retornar matrizes NumPy como imagens usando FastAPI?

Publicado em 2024-11-14
Navegar:962

How to Return NumPy Arrays as Images Using FastAPI?

Como renderizar um array NumPy como uma imagem no FastAPI

Problema: exibindo um array NumPy como uma imagem no FastAPI

Solução:

Para exibir um array NumPy como uma imagem no FastAPI, você tem duas opções principais:

Opção 1: Retornar imagem como bytes

Essa abordagem envolve converter a matriz NumPy em bytes usando a biblioteca PIL ou OpenCV e, em seguida, retornar os bytes como uma resposta personalizada com os cabeçalhos apropriados.

Usando PIL:

# Convert NumPy array to bytes using PIL
from PIL import Image
import io

arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
buf = BytesIO()
im = Image.fromarray(arr)
im.save(buf, format='PNG')
im_bytes = buf.getvalue()

# Return bytes as a Response with appropriate headers
from fastapi import Response

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

Usando OpenCV:

# Convert NumPy array to bytes using OpenCV
import cv2

arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
arr = cv2.cvtColor(arr, cv2.COLOR_RGB2BGR)
success, im = cv2.imencode('.png', arr)

# Return bytes as a Response with appropriate headers
from fastapi import Response

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

Opção 2: Retornar imagem como matriz NumPy codificada em JSON

Essa abordagem não é recomendada para fins de exibição, mas pode ser usada para transferência de dados.

Usando PIL:

import numpy as np
import json

# Convert NumPy array to JSON-encoded string
arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
json_data = json.dumps(arr.tolist())

Usando OpenCV:

import numpy as np
import cv2
import json

# Convert NumPy array to JSON-encoded string
arr = np.zeros((512, 512, 3), dtype=np.uint8)  # Sample RGB image
json_data = json.dumps(arr.tolist()).replace('-1', '255')
Declaração de lançamento Este artigo é reproduzido em: 1729687306 Se houver alguma violação, entre em contato com [email protected] para excluí -lo.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3