> 백엔드 개발 > 파이썬 튜토리얼 > FastAPI에서 NumPy 배열을 이미지로 표시하는 방법은 무엇입니까?

FastAPI에서 NumPy 배열을 이미지로 표시하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-10-24 03:42:02
원래의
527명이 탐색했습니다.

How to Display NumPy Arrays as Images in FastAPI?

FastAPI에서 NumPy 배열을 이미지로 렌더링

소개

FastAPI는 API 구축에 널리 사용되는 Python 프레임워크입니다. 이는 HTTP 요청 및 응답을 처리하는 편리한 방법을 제공합니다. 이 문서에서는 FastAPI에서 NumPy 배열을 이미지로 렌더링하는 방법을 보여줍니다.

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

PIL 사용

<code class="python">from PIL import Image
from io import BytesIO

@app.get("/image", response_class=Response)
def get_image():
    arr = np.zeros((512, 512, 3), dtype=np.uint8)
    arr[0:256, 0:256] = [255, 0, 0]  # Red patch in the upper left
    im = Image.fromarray(arr)

    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 = np.zeros((512, 512, 3), dtype=np.uint8)
    arr[0:256, 0:256] = [255, 0, 0]  # Red patch in the upper left
    arr = cv2.cvtColor(arr, cv2.COLOR_RGB2BGR)  # OpenCV uses BGR

    success, im = cv2.imencode('.png', arr)
    headers = {'Content-Disposition': 'inline; filename="test.png"'}
    return Response(im.tobytes(), headers=headers, media_type='image/png')</code>
로그인 후 복사

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

참고: 이 옵션은 이미지를 JavaScript 개체로 변환하고 보내는 경우에만 사용하세요.

PIL 사용

<code class="python">import json

@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">@app.get("/image")
def get_image():
    arr = cv2.imread('test.png')
    return json.dumps(arr.tolist())</code>
로그인 후 복사

위 내용은 FastAPI에서 NumPy 배열을 이미지로 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿