无法在 Python 中使用 base64 编码数据
Posted
技术标签:
【中文标题】无法在 Python 中使用 base64 编码数据【英文标题】:Not able to use base64 encoded data in Python 【发布时间】:2020-03-21 21:01:12 【问题描述】:所以我有这段代码,它使用 base_64 编码数据(图像数据),将其转换为图像并在其上运行 google vision (OCR)。但是 base_64 编码数据存在一些问题。即使认为它是正确的,它也会引发以下错误。
base64 编码字符串无效:数据字符数 (167737) 不能为 1 大于 4 的倍数
由于该字符串是 2000 行,我无法在此处输入,b'/9j/4af..........TE2f//Z'
这就是它的开始和结束方式,其中包含 167737 个字符。
那么我现在该怎么办,因为我无法将其转换回图像文件。只是为了测试代码,我正在使用一个我转换为 base_64 的图像并使用该字符串将其传递给另一个代码,该代码应该在对转换后的图像运行 ocr 后给我文本输出。
【问题讨论】:
你是怎么把图片转成base64的?看来转换没有正确完成。 我使用了 my_string = base64.b64encode(img_file.read()) ,我认为转换没有问题 您说“即使它是正确的”,但它显然不是:错误消息告诉您到底哪里出了问题。 Base-64 字符串始终是 4 个字符的倍数。可能是您无意中在末尾添加了一个字符(可能是换行符,这在编辑器中很难看到)。首先要尝试确保您的字符串不会太长。 也许google坚持要填充(编码字符的数量必须能被3整除,否则你必须添加填充字符'=')。 好吧,我试一次,你们是最棒的:) 【参考方案1】:添加缺少的填充。
padding = len(data) % 4
if padding > 0:
data += b'='* (4 - padding)
base64.b64decode(data)
【讨论】:
以上是关于无法在 Python 中使用 base64 编码数据的主要内容,如果未能解决你的问题,请参考以下文章