Ich arbeite derzeit mit Python3, und mein Projekt erfordert Captcha-Generierung. Mein Ziel ist es, das Captcha zu generieren und es dann als base64 zurückzugeben, damit es in JSON an den Client geliefert werden kann.Kann Captcha-Objekt nicht in Base64 konvertieren
aber ich habe Probleme bei Umwandlung in eine base64 string:
captcha=image.generate(captchatext)
assert isinstance(captcha, BytesIO)
captcha=base64.b64encode(captcha)
gibt den Fehler:
captcha=base64.b64encode(captcha)
File "/usr/lib/python3.6/base64.py", line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not '_io.BytesIO'
Ich bin nicht ganz sicher, warum? Könnte mir jemand helfen zu verstehen, warum es nicht konvertieren wird?
Vielen Dank für jede Hilfe :)
'' BytesIO'' ist kein Puffer, aber es ist eine Datei, die einen Puffer als Backend verwendet. Ein Puffer ist ein Objekt, das das [Buffer Protocol] (https://docs.python.org/3/c-api/buffer.html) implementiert und kann zum Beispiel mit '' bytearray() '' erhalten werden. (Wenn BytesIO * tatsächlich ein Puffer ist, würde 'b64encode'' funktionieren, wie mit' 'base64.b64encode (bytearray())' 'oder sogar' 'base64.b64encode (numpy.zeros (20)) bestätigt werden kann. '' (ja, numpy Arrays implementieren das Pufferprotokoll und sind somit Puffer).) Der allgemeine Geist Ihrer Antwort ist jedoch korrekt, also haben Sie +1. –