Maison > Article > développement back-end > Comment renvoyer des tableaux NumPy sous forme d'images à l'aide de FastAPI ?
Pour afficher un tableau NumPy sous forme d'image dans FastAPI, vous disposez de deux options principales :
Option 1 : renvoyer l'image sous forme d'octets
Cette approche implique la conversion le tableau NumPy en octets en utilisant la bibliothèque PIL ou OpenCV, puis en renvoyant les octets sous forme de réponse personnalisée avec les en-têtes appropriés.
Utilisation de 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>
Utilisation d'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>
Option 2 : Renvoyer l'image sous forme de tableau NumPy codé en JSON
Cette approche n'est pas recommandée à des fins d'affichage, mais peut être utilisé pour le transfert de données.
Utilisation de 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>
Utilisation d'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>
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!