3
現在私はpython3で作業していますが、私のプロジェクトにはcaptchaの生成が必要です。私の目標は、captchaを生成してbase64として返すことで、JSONでクライアントに提供することができます。captchaオブジェクトをbase64に変換できません
しかし私は、base64文字列に変換し、トラブルを抱えている:
captcha=image.generate(captchatext)
assert isinstance(captcha, BytesIO)
captcha=base64.b64encode(captcha)
はエラーを返します:
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'
は私がなぜ全くわからないんだけど?誰かがなぜそれが変換されないのか理解できるように助けられますか?任意のヘルプ:)
'' BytesIO''はバッファではありませんが、バックエンドとしてバッファを使用するファイルのようなものです。バッファは[Buffer Protocol](https://docs.python.org/3/c-api/buffer.html)を実装するオブジェクトで、例えば '' bytearray() ''で取得できます。 (BytesIO *が実際にバッファだった場合、 '' b64encode''は '' base64.b64encode(bytearray()) 'や' 'base64.b64encode(numpy.zeros(20))で確認できるように機能します''(はい、numpyの配列はバッファプロトコルを実装しているのでバッファです)。答えの一般的な精神は正しいですが、+1があります。 –