Maison  >  Article  >  développement back-end  >  Comment rendre un tableau NumPy sous forme d'image dans FastAPI : dépannage du problème du carré blanc ?

Comment rendre un tableau NumPy sous forme d'image dans FastAPI : dépannage du problème du carré blanc ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-24 00:30:02430parcourir

How to Render NumPy Array as Image in FastAPI: Troubleshooting White Square Issue?

Comment afficher le tableau NumPy sous forme d'image dans FastAPI

Problème :

Malgré un Tableau NumPy représentant une image, il apparaît sous la forme d'un carré blanc lors de la tentative de rendu.

Solution :

Option 1 : Renvoyer l'image en octets

À l'aide d'une classe Response personnalisée, suivez ces étapes :

  1. Chargez l'image à partir du disque ou convertissez un tableau NumPy en mémoire en une image à l'aide de PIL ou OpenCV.
  2. Enregistrez l'image dans un tampon BytesIO en utilisant respectivement la méthode save() ou imencode().
  3. Définissez l'en-tête Content-Disposition pour spécifier la visualisation ou le téléchargement en ligne.
  4. Renvoyez le octets d'image dans une réponse avec le type_média défini sur le format d'image approprié (par exemple, « image/png »).

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

Cette option n'est pas idéale pour afficher des images dans le navigateur mais vous permet d'encoder le tableau NumPy en JSON et de le décoder à nouveau en image côté client.

  1. Convertir le Tableau NumPy en liste à l'aide de la méthode tolist().
  2. Encodez la liste au format JSON et renvoyez-la dans une réponse.
  3. Côté client, décodez la chaîne JSON dans un tableau NumPy et utilisez PIL ou OpenCV pour créer une image à partir de celui-ci.

Remarque :

  • Pour les deux options, la définition de l'en-tête Content-Disposition est cruciale pour afficher l'image dans le navigateur.
  • StreamingResponse n'est pas nécessaire si le tableau NumPy est chargé en mémoire et peut être renvoyé efficacement en une seule réponse.

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