base64解码图像“不正确的填充”

时间:2019-03-18 19:06:32

标签: python base64

我正在尝试解码从目录中选择的图像。一旦选择了图像,我需要解码编码的字符串。

我一直收到错误“填充错误”的信息。

下面是我打印时的代码和编码字符串。

save()

这里是字符串:它是一个很大的字符串,所以我在这里托管了它。 https://www.scribd.com/document/402282670/String

2 个答案:

答案 0 :(得分:0)

此问题的答案是其他答案https://stackoverflow.com/a/6102526/6110285

我会说这是this question

的副本

基本base64会将3个字节编码为4个字节,因此,如果填充( = 字符)在解码中遗漏了1个或2个字节,则会引起您提到的错误< / p>

答案 1 :(得分:0)

导致错误的填充错误,因为有时在编码的字符串中也存在元数据。如果您的字符串看起来像:“ data:image / png; base64,... base 64的东西....”,那么您需要先删除第一部分,然后再对其进行解码。

如果您有图像base64编码的字符串,请尝试下面的代码段。

from PIL import Image
from io import BytesIO
from base64 import b64decode
im = Image.open(BytesIO(b64decode(encoded .split(',')[1])))
im.save("image.png")

否则,您可以简单地将其写为

with open(filename, 'wb') as image_file:
    image_file.write(b64decode(encoded.split(',')[1]))