Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengembalikan Tatasusunan NumPy sebagai Imej Menggunakan FastAPI?

Bagaimana untuk Mengembalikan Tatasusunan NumPy sebagai Imej Menggunakan FastAPI?

DDD
DDDasal
2024-10-24 05:47:02545semak imbas

How to Return NumPy Arrays as Images Using FastAPI?

Cara Menghasilkan Tatasusunan NumPy sebagai Imej dalam FastAPI

Isu: Memaparkan tatasusunan NumPy sebagai imej dalam FastAPI

Penyelesaian:

Untuk memaparkan tatasusunan NumPy sebagai imej dalam FastAPI, anda mempunyai dua pilihan utama:

Pilihan 1: Kembalikan Imej sebagai Bait

Pendekatan ini melibatkan penukaran tatasusunan NumPy menjadi bait menggunakan sama ada pustaka PIL atau OpenCV dan kemudian mengembalikan bait sebagai Respons tersuai dengan pengepala yang sesuai.

Menggunakan PIL:

<code class="python"># 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')</code>

Menggunakan OpenCV:

<code class="python"># 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')</code>

Pilihan 2: Kembalikan Imej sebagai Array NumPy yang dikodkan JSON

Pendekatan ini tidak disyorkan untuk tujuan paparan tetapi boleh digunakan untuk pemindahan data.

Menggunakan PIL:

<code class="python">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())</code>

Menggunakan OpenCV:

<code class="python">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')</code>

Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Tatasusunan NumPy sebagai Imej Menggunakan FastAPI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn