"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إرجاع مصفوفات NumPy كصور باستخدام FastAPI؟

كيفية إرجاع مصفوفات NumPy كصور باستخدام FastAPI؟

تم النشر بتاريخ 2024-11-14
تصفح:278

How to Return NumPy Arrays as Images Using FastAPI?

كيفية عرض مصفوفة NumPy كصورة في FastAPI

المشكلة: عرض مصفوفة NumPy كصورة في FastAPI

الحل:

لعرض مصفوفة NumPy كصورة في FastAPI، لديك اثنين رئيسيين الخيارات:

الخيار 1: إرجاع الصورة كوحدات بايت

يتضمن هذا الأسلوب تحويل مصفوفة NumPy إلى بايتات باستخدام إما مكتبة PIL أو OpenCV ثم إرجاع البايتات كـ استجابة مخصصة بالعناوين المناسبة.

استخدام 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')
استخدام OpenCV:

# تحويل مصفوفة NumPy إلى بايت باستخدام OpenCV استيراد السيرة الذاتية2 arr = np.zeros((512, 512, 3), dtype=np.uint8) # نموذج صورة RGB آر = cv2.cvtColor(arr, cv2.COLOR_RGB2BGR) النجاح، im = cv2.imencode('.png', arr) # إرجاع البايتات كرد مع الرؤوس المناسبة من استجابة استيراد fastapi الرؤوس = {'ترتيب المحتوى': 'مضمّن؛ اسم الملف = "test.png"'} return Response(im.tobytes(), headers=headers, media_type='image/png')
# 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')
الخيار 2: إرجاع الصورة كمصفوفة NumPy بترميز JSON

لا ينصح بهذا الأسلوب لأغراض العرض ولكن يمكن استخدامه لنقل البيانات.

استخدام PIL:

استيراد numpy كـ np استيراد json # تحويل مصفوفة NumPy إلى سلسلة مشفرة بـ JSON arr = np.zeros((512, 512, 3), dtype=np.uint8) # نموذج صورة RGB json_data = json.dumps(arr.tolist())
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())

استيراد numpy كـ np استيراد السيرة الذاتية2 استيراد json # تحويل مصفوفة NumPy إلى سلسلة مشفرة بـ JSON arr = np.zeros((512, 512, 3), dtype=np.uint8) # نموذج صورة RGB json_data = json.dumps(arr.tolist()).replace('-1', '255')

بيان الافراج يتم استنساخ هذه المقالة في: 1729687306 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3