"FastAPI를 사용하여 numpy 배열을 이미지로 반환하는 방법" 기사에서 유용한 정보를 제공하지만 이미지 표시 문제를 직접적으로 해결하지는 않습니다. 이 문제를 해결하려면 기본 기술을 더 자세히 살펴보겠습니다.
이 방법에는 PIL 또는 OpenCV와 같은 라이브러리를 사용하여 이미지 데이터를 바이트로 변환하는 작업이 포함됩니다. 그런 다음 결과 바이트는 적절한 콘텐츠 유형 및 헤더가 포함된 사용자 정의 응답으로 제공될 수 있습니다.
PIL 사용:
<code class="python">from PIL import Image import io @app.get('/image', response_class=Response) def get_image(): im = Image.open('test.png') with io.BytesIO() as buf: im.save(buf, format='PNG') im_bytes = buf.getvalue() headers = {'Content-Disposition': 'inline; filename="test.png"'} return Response(im_bytes, headers=headers, media_type='image/png')</code>
OpenCV 사용:
<code class="python">import cv2 @app.get('/image', response_class=Response) def get_image(): arr = cv2.imread('test.png', cv2.IMREAD_UNCHANGED) success, im = cv2.imencode('.png', arr) headers = {'Content-Disposition': 'inline; filename="test.png"'} return Response(im.tobytes(), headers=headers, media_type='image/png')</code>
이 접근 방식은 이미지 표시에 권장되지 않지만 이미지를 JSON 인코딩 배열로 변환하는 데 사용할 수 있습니다. 나중에 클라이언트 측에서 이미지로 다시 변환할 수 있는 numpy 배열입니다.
PIL 사용:
<code class="python">from PIL import Image import numpy as np @app.get('/image') def get_image(): im = Image.open('test.png') arr = np.asarray(im) return json.dumps(arr.tolist())</code>
OpenCV 사용:
<code class="python">import cv2 @app.get('/image') def get_image(): arr = cv2.imread('test.png', cv2.IMREAD_UNCHANGED) return json.dumps(arr.tolist())</code>
이 방법을 사용하여 이미지를 표시하려면 수신된 바이트 또는 JSON 인코딩 데이터를 클라이언트 측에서 다시 이미지 형식으로 변환해야 합니다.
위 내용은 FastAPI에서 NumPy 이미지 배열을 어떻게 렌더링합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!