如何在 FastAPI 中将 NumPy 数组显示为图像
问题:
尽管有表示图像的 NumPy 数组,在尝试渲染时显示为白色方块。
解决方案:
选项 1:以字节形式返回图像
使用自定义 Response 类,请按照以下步骤操作:
- 从磁盘加载图像或使用 PIL 或 OpenCV 将内存中的 NumPy 数组转换为图像。
- 分别使用 save() 或 imencode() 方法将图像保存到 BytesIO 缓冲区中。
- 设置 Content-Disposition 标头以指定内联查看或下载。
- 返回响应中的图像字节,其中 media_type 设置为适当的图像格式(例如“image/png”)。
选项 2:以 JSON 编码的 NumPy 数组形式返回图像
此选项不适合在浏览器中显示图像,但允许您将 NumPy 数组编码为 JSON 并在客户端将其解码回图像。
- 将使用 tolist() 方法将 NumPy 数组转换为列表。
- 将列表编码为 JSON 并在响应中返回。
- 在客户端,将 JSON 字符串解码回 NumPy 数组并使用 PIL 或 OpenCV 从其创建图像。
注意:
- 对于这两个选项,设置 Content-Disposition 标头至关重要用于在浏览器中显示图像。
- 如果 NumPy 数组已加载到内存中并且可以在单个响应中有效返回,则不需要 StreamingResponse。
以上是如何在 FastAPI 中将 NumPy 数组渲染为图像:解决白方块问题?的详细内容。更多信息请关注PHP中文网其他相关文章!