Python解码base64到图片不工作



我已经得到了一个图像的Base64表示,我从一个应用程序发送到我的redis服务器:https://1drv.ms/t/s ! AkTtiXv5QMtWliMbeziGpd0t1EjW ? e = JDHEkt

对于那些不想下载整个13MB数据文件的人来说,这里是数据的摘录:

b'\/9j\/4b6URXhpZgAASUkqAAgAAAAMAAABBAABAAAAoA8AAAEBBAABAAAAuAsAAA8BAgAIAAAAngAA\nABABAgAJAAAApgAAABIBAwABAAAAAQAAABoBBQABAAAA0gAAABsBBQABAAAA2gAAACgBAwABAAAA\nAgAAADEBAgAOAAAAsAAAADIBAgAUAAAAvgAAABMCAwABAAAAAQAAAGmHBAABAAAA4gAAAIQCAABz\nYW1

我试着用以下方法修复b64:

import base64
with open('Outputfirst.txt', 'r') as file:
imgstring = file.read().replace('n', '')
#get rid of wrong characters
imgstring = imgstring.replace("b'",'')
imgstring = imgstring.replace('\','')
imgstring = imgstring.replace('"','')
imgstring = imgstring.replace(''','')
imgstring = imgstring.replace(',','')
#take care of padding
if(len(imgstring)%4 ==1):
imgstring = imgstring +"==="
if(len(imgstring)%4 ==2):
imgstring = imgstring +"=="
if(len(imgstring)%4 ==3):
imgstring = imgstring +"="
imgstring = bytes(imgstring,'utf8')
with open(filename, 'wb') as f:
f.write(imgstring)

imgdata = base64.b64decode(imgstring)
filename = 'some_image3.jpg' 
with open(filename, 'wb') as f:
f.write(imgdata) 

但不知何故,我没有得到正确的图像。

当我通过https://base64.guru/tools/repair使用此工具并将其输出作为脚本的输入时,我得到了我想要的图像。

似乎\n没有被过滤掉。

整个过滤和填充可以这样做:

with open('Outputfirst.txt', 'r') as file:
imgstring = file.read().replace('\n', '').replace('\','').replace("b'",'')
imgstring = imgstring + '=' * (4 - len(imgstring) % 4)

用3 '='填充无效:

if(len(imgstring)%4 ==1):
imgstring = imgstring +"==="

最新更新