使用Python Tornado在后回复中发送多个图像

时间:2017-09-25 07:12:29

标签: python tornado

我有一个带有API调用的Tornado Web服务,它应该接受一个图像并将它的某些部分返回给客户端。

我已经设法将单个图像发送回客户端以进行不同的API调用,如下所示:

byteIO = io.BytesIO()
Image.fromarray(preprocessedImg).save(byteIO, 'PNG')
self.write(byteIO.getvalue())
self.set_header("Content-type", "image/png")

然后我尝试以这种方式发送多张图片:

results = {}
# changes the segments to raw image data
for key, segment in segments.items():
  byteIO = io.BytesIO()
  Image.fromarray(segment).save(byteIO, 'PNG')
  results[key] = byteIO.getvalue()
# sends the segments to the client
self.write(results)
# self.set_header("Content-type", "image/png")

这会引发错误“....... x0c”\ x91 \ t \ x00 \ x00 \ x00 \ x00IEND \ xaeB` \ x82'不是JSON可序列化的 “ 当self.set_header没有被注释掉时,我得到了同样的错误。

将按密钥排序的多个图像发送到客户端的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

字节流不是JSON可序列化字符串,通过解码将字节流转换为字符串。

results[key] = str(byteIO.getvalue().decode("utf-8",errors='replace'))