首页  >  文章  >  后端开发  >  如何在 FastAPI 中将 NumPy 数组渲染为图像:解决白方块问题?

如何在 FastAPI 中将 NumPy 数组渲染为图像:解决白方块问题?

Linda Hamilton
Linda Hamilton原创
2024-10-24 00:30:02430浏览

How to Render NumPy Array as Image in FastAPI: Troubleshooting White Square Issue?

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

问题:

尽管有表示图像的 NumPy 数组,在尝试渲染时显示为白色方块。

解决方案:

选项 1:以字节形式返回图像

使用自定义 Response 类,请按照以下步骤操作:

  1. 从磁盘加载图像或使用 PIL 或 OpenCV 将内存中的 NumPy 数组转换为图像。
  2. 分别使用 save() 或 imencode() 方法将图像保存到 BytesIO 缓冲区中。
  3. 设置 Content-Disposition 标头以指定内联查看或下载。
  4. 返回响应中的图像字节,其中 media_type 设置为适当的图像格式(例如“image/png”)。

选项 2:以 JSON 编码的 NumPy 数组形式返回图像

此选项不适合在浏览器中显示图像,但允许您将 NumPy 数组编码为 JSON 并在客户端将其解码回图像。

  1. 将使用 tolist() 方法将 NumPy 数组转换为列表。
  2. 将列表编码为 JSON 并在响应中返回。
  3. 在客户端,将 JSON 字符串解码回 NumPy 数组并使用 PIL 或 OpenCV 从其创建图像。

注意:

  • 对于这两个选项,设置 Content-Disposition 标头至关重要用于在浏览器中显示图像。
  • 如果 NumPy 数组已加载到内存中并且可以在单个响应中有效返回,则不需要 StreamingResponse。

以上是如何在 FastAPI 中将 NumPy 数组渲染为图像:解决白方块问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

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