如何 return 来自 cherrypy 的二维码(枕头图像)作为 PNG 而不将其保存为静态文件?
How to return a qrcode (pillow image) from cherrypy as PNG without saving it as a static file?
我正在尝试使用 this 二维码库生成 png
包含二维码。我想使用 cherrypy 来提供这张图片
动态地。
qrcode借鉴了PIL/Pillow库,所以我强烈怀疑
下面代码中的 img 与枕头图像的工作方式相同:
当我通过手动打印来测试它时,我得到了这个。
>>> print(img)
<qrcode.image.pil.PilImage object at 0xcb2c90>
这是我在 cherrypy 中动态创建二维码的代码。
此代码无效。
@cp.expose
def qrcode(self, ticketnumber = 'unknown'):
img = qrcode.make(ticketnumber)
# this works:
# img.save('local.png')
cp.response.headers['Content-Type'] = "image/png"
buffer = StringIO.StringIO()
# this is a guess and not working
img.save(buffer, format='PNG')
buffer.seek(0)
return file_generator(buffer)
知道如何 return PIL/pillow 图像而不将其保存为静态文件吗?
经过更多谷歌搜索后,我得到了正确的语法。
下面的例子有效
@cp.expose
def qrcode(self, ticketnumber = 'unknown'):
img = qrcode.make(ticketnumber)
cp.response.headers['Content-Type'] = "image/png"
buffer = StringIO.StringIO()
img.save(buffer, 'PNG')
return buffer.getvalue()
对于python3:注意没有StringIO了,参考this post
将上面的 buffer = StringIO.StringIO()
替换为 buffer = io.BytesIO()
适合我。
我正在尝试使用 this 二维码库生成 png 包含二维码。我想使用 cherrypy 来提供这张图片 动态地。
qrcode借鉴了PIL/Pillow库,所以我强烈怀疑 下面代码中的 img 与枕头图像的工作方式相同: 当我通过手动打印来测试它时,我得到了这个。
>>> print(img)
<qrcode.image.pil.PilImage object at 0xcb2c90>
这是我在 cherrypy 中动态创建二维码的代码。 此代码无效。
@cp.expose
def qrcode(self, ticketnumber = 'unknown'):
img = qrcode.make(ticketnumber)
# this works:
# img.save('local.png')
cp.response.headers['Content-Type'] = "image/png"
buffer = StringIO.StringIO()
# this is a guess and not working
img.save(buffer, format='PNG')
buffer.seek(0)
return file_generator(buffer)
知道如何 return PIL/pillow 图像而不将其保存为静态文件吗?
经过更多谷歌搜索后,我得到了正确的语法。 下面的例子有效
@cp.expose
def qrcode(self, ticketnumber = 'unknown'):
img = qrcode.make(ticketnumber)
cp.response.headers['Content-Type'] = "image/png"
buffer = StringIO.StringIO()
img.save(buffer, 'PNG')
return buffer.getvalue()
对于python3:注意没有StringIO了,参考this post
将上面的 buffer = StringIO.StringIO()
替换为 buffer = io.BytesIO()
适合我。