>  기사  >  백엔드 개발  >  FastAPI에서 NumPy 이미지 배열을 어떻게 렌더링합니까?

FastAPI에서 NumPy 이미지 배열을 어떻게 렌더링합니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-24 02:40:02754검색

How Do You Render a NumPy Image Array in FastAPI?

FastAPI에서 NumPy 배열 렌더링

"FastAPI를 사용하여 numpy 배열을 이미지로 반환하는 방법" 기사에서 유용한 정보를 제공하지만 이미지 표시 문제를 직접적으로 해결하지는 않습니다. 이 문제를 해결하려면 기본 기술을 더 자세히 살펴보겠습니다.

옵션 1: 이미지를 바이트로 반환

이 방법에는 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=&quot;test.png&quot;'}
    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=&quot;test.png&quot;'}
    return Response(im.tobytes(), headers=headers, media_type='image/png')</code>

옵션 2: 이미지를 JSON 인코딩 NumPy 배열로 반환

이 접근 방식은 이미지 표시에 권장되지 않지만 이미지를 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.