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!