【问题标题】:Python Decode base64 to picture not workingPython将base64解码为图片不起作用
【发布时间】:2021-03-04 19:16:42
【问题描述】:

我有以下 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 使用此工具并将其输出作为脚本的输入时,我得到了我想要的图像。

【问题讨论】:

  • 能否包含 base64 编码的图像或指向它的链接,以便我们尝试一下?
  • 感谢您的回复。您可以从上面的 onedrive 链接获得它吗? 1drv.ms/t/s!AkTtiXv5QMtWliMbeziGpd0t1EjW?e=JDHEkt
  • 是什么让您认为您标记为“坏角色”的所有内容都非常糟糕?其中许多看起来像是从 Python 打印字符串的工件,例如前导 b'。随机字节串中的任何 2 个字符序列有 1/65536 的机会与之匹配。
  • 我只是在有和没有的情况下对其进行了测试,它似乎不适用于初始 b'。但由于我最初的错误,这可能是错误的。

标签: python base64 decode repair


【解决方案1】:

似乎\\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 +"==="

【讨论】:

  • 非常感谢。我错过了一个\。在第一次过滤时,因为我认为 replace('\n') 会完成这项工作。这花了我几个小时。希望这对将来的某些人有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 2012-10-05
相关资源
最近更新 更多