首页  >  文章  >  后端开发  >  如何在 FastAPI 中将 NumPy 数组显示为图像?

如何在 FastAPI 中将 NumPy 数组显示为图像?

Barbara Streisand
Barbara Streisand原创
2024-10-24 03:42:02417浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn