我已经阅读了许多帖子,例如this one,详细介绍了如何使用WSGI动态返回图像。但是,我看到的所有示例都是以二进制格式打开图像,读取它然后返回该数据(这对我很有用)。
我很难尝试使用内存中的PIL图像对象来实现相同的功能。我不想将图像保存到文件中,因为我已经在内存中保存了图像。
鉴于此:
fd = open( aPath2Png, 'rb')
base = Image.open(fd)
... lots more image processing on base happens ...
我试过这个:
data = base.tostring()
response_headers = [('Content-type', 'image/png'), ('Content-length', len(data))]
start_response(status, response_headers)
return [data]
WSGI会将此返回给客户端。但是我会收到图片错误,说回来的图片有问题。
还有其他方法吗?
答案 0 :(得分:11)
请参阅Image.save()。它可以采用文件对象,在这种情况下,您可以将其写入StringIO实例。因此像:
output = StringIO.StringIO()
base.save(output, format='PNG')
return [output.getvalue()]
您需要检查可用于格式的值。