如何在Flask中返回图像作为GET请求响应的一部分?

瑞安·法斯金(Ryan Fasching)

我有一个基本的Python Flask API设置权,而不是将ID作为GET请求的参数。在获取请求逻辑中,我正在对另一个资源执行获取请求,以检索与传入ID相关联的图像:

image = requests.get(url = image_url)
image = Image.open(BytesIO(image.content))
print(image.format)

返回的图像格式JPEG

我想将此添加为我的API响应的一部分。这是我的GET端点的定义:

@app.route('/getmsg/', methods=['GET']) 
def respond():

这就是我试图返回从其他资源获得的图像的方式:

return {"image": send_file(image, mimetype='image/jpeg'), "data": jsonify(return_list)}

我已经尝试过以下stackoverflow问题:如何在烧瓶响应中返回图像?

这就是我现在所处的位置。我通过以下端点提出了获取请求:http://localhost:5000/getmsg/?id=7187167507933759112

我还尝试过只返回图像,如下所示:

return send_file(image, mimetype='image/jpeg')

但这给了我同样的错误。

一切正常,除了返回图像。

我希望能够在get请求的响应中看到该图像,但是现在它给出了500个内部服务器错误。

这是我在终端中得到的响应:

TypeError: <Response 693 bytes [200 OK]> is not JSON serializable

任何关于我做错事情的指导将不胜感激。谢谢。

夏尔·帕雷克(Harshal Parekh)

从以下文档中send_file()

将文件的内容发送到客户端。这将使用可用和配置的最有效方法。

这意味着send_file本身就是一个响应。这就是为什么出现此错误的原因:Response 693 bytes [200 OK]

发送图像的一种可能解决方案是对文件进行base64_encode。像这样:

with open("yourfile.ext", "rb") as image_file:
    encoded_string = base64.b64encode(image_file.read())

然后像这样发送响应:

return {"image": encoded_string, "data": jsonify(return_list)}

并在另一端解码字符串,例如:

base64.b64decode(coded_string)

这也使响应的大小更小,从而也提高了性能。

希望这可以帮助。祝好运。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Paw中将文件作为多部分请求的一部分上载?

如何在 mysql 中执行 IF 语句作为 SELECT 语句的一部分

在Vue.js中返回组件的输出作为方法的HTML响应的一部分

如何在返回值中获取列表的一部分

使用响应头作为 Retrofit 返回对象的一部分

如何在提琴手中拦截多部分/表单数据并访问作为请求一部分的二进制文件

如何使用Firebase UID作为图像URL的一部分从Firebase存储中检索图像?

如何在 CakePHP 3 中访问 GET url 的最后一部分

如何传递会话ID作为Soap请求的一部分?

如何仅将我的精灵图像的一部分重复作为div的背景

将图像拖到pygame中作为网格一部分的图块上

如何在 OCaml 中输出一个空元组作为函数的一部分?

作为结构调用的一部分,如何在一行中编写变量名称?

我如何迭代从Mongodb返回的arrayList作为结果的一部分?

如何返回记录数作为select语句的一部分?

如何显示大图像的一部分?

如何仅显示图像的一部分

如何淡化图像的一部分

如何仅分析图像的一部分?

如何在代马家滑块中显示下一张图像的一部分?

在Android中模糊图像的一部分

在matlab中遮盖图像的一部分?

在Imagemagick中模糊图像的一部分

在Python中缩小图像的一部分

在python中编辑图像的一部分

如何在Golang中将jsonb编码为http响应的一部分

如何在python中将api响应的一部分转换为完整的json

如何在 Postgres 中合并作为 Concact 字符串一部分的空/空值?

作为Visual Studio Team Services构建任务的一部分,如何在PowerShell脚本中执行SQL?