尝试将内存映像转换为base64字符串时出现类型错误?

2024-09-28 18:46:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我通过DAJAX通过POST获取URL。在

然后将URL传递给下面的函数。引发类型错误。在

我不想将“img”保存到磁盘,然后重新打开它进行转换。在

我不知道还能做什么,所以我想我就是这个世界。提前谢谢你的帮助。在

def getqrcode(link):
    bsettings = Bitcoinsettings.objects.get(pk=1)
    qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=bsettings.qrcodesize , border=5,)
    qr.add_data(link)
    qr.make(fit=True)
    img = qr.make_image()
    output = StringIO.StringIO()
    img.save(output, 'GIF')
    contents = output.getvalue()
    data = base64.b64encode(open(contents,'rb').read())
    data = "data:image/png;base64," + data
    output.close()
    img = []
    return data

TypeError: file() argument 1 must be encoded string without NULL bytes, not str

这是阿贾克斯.py代码。在

^{pr2}$

Tags: imageurlimgoutputdatamakecontentslink
1条回答
网友
1楼 · 发布于 2024-09-28 18:46:02

我不确定您是否理解返回ouput.getvalue()的内容,因为您正在尝试用

data = base64.b64encode(open(contents,'rb').read())

但是在上面的一行contents已经包含了图像文件的字符串表示。几乎可以肯定的是,这里隐藏了file()抱怨的恼人的空字节。在

尝试通过以下方式更改上面的行:

^{pr2}$

也可以查看StringIO引用。在

相关问题 更多 >