0
我通過DAJAX通過POST獲取URL。試圖將內存中的圖像轉換爲base64字符串時獲取TypeError?
然後將URL傳遞到下面的函數中。 TypeError被拋出。
我不想將'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
這裏是ajax.py代碼。
from torgap.bitcoin.bitcoin import getqrcode
from dajaxice.decorators import dajaxice_register
from dajax.core import Dajax
@dajaxice_register
def getimage(request, image):
try:
dajax = Dajax()
link = image
image = getqrcode(link)
dajax.assign('#qrcode', 'src', image)
return dajax.json()
except Exception as e:
print e