【问题标题】:How to decode base64 string to its original image and open it without saving it如何将base64字符串解码为其原始图像并打开它而不保存它
【发布时间】:2018-06-28 17:56:55
【问题描述】:

所以我现在有这个基本代码。

import base64
with open("test.png", "rb") as image_file:
    encoded_string = base64.b64encode(image_file.read())

它会将图像转换为一个疯狂的长字符串,我这样做是希望复制该字符串并使其成为我正在制作的另一个脚本中的变量。我不想将它保存到计算机或任何东西,我只是希望它被解码并为 GUI 背景打开。我正在努力做到这一点,所以只需要 exe 即可。

我发现了其他问题,但遗憾的是我不能很好地理解答案。所以如果可能的话,最简单的方法会更受欢迎,谢谢!

编辑:链接的可能重复是公平的,但它没有回答我的问题,因为正如我所说,我不明白他们做了什么,为什么它会这样工作。如果我完全理解它,我认为它存储图像路径而不是 exe 中的实际图像。我希望能够获取 exe 文件,并且只能在闪存驱动器上使用它。

【问题讨论】:

  • 那么您想在 GUI 中显示图像吗?为什么要将它作为字符串?
  • @Felix 我只是希望它存储在 exe 文件中,所以你只需要那个文件。我可以从其他帖子中得知的最好方法是使用 base64 对图像进行编码,将该字符串保存为变量。然后解码该字符串。对吗?
  • 好的,我明白了。你用什么来冻结你的程序? pyinstaller?
  • @Felix 是的,是的,pyinstaller。

标签: python image python-2.7 base64 exe


【解决方案1】:

您可以将encoded_string 打印到控制台,从那里复制并将其粘贴到您的代码中。 encoded_string 看起来像:

'R0lGODlhUABFAHAAA ... Qiq0Z1q2XN6oYYoQIBAQA7'

在这个例子的代码中使用它:

import tkinter as tk

image_string = 'R0lGODlhUABFAHAAA ... Qiq0Z1q2XN6oYYoQIBAQA7'

root = tk.Tk()
imgFrame = tk.Frame(root)
imgFrame.pack()
img = tk.PhotoImage(data=image_string)
imgLabel = tk.Label(imgFrame, image=img)
imgLabel.pack()

【讨论】:

  • 谢谢,这正是我正在寻找的,但遗憾的是,当我运行它时,我得到了一个 _tkinter.TclError: 无法识别图像数据错误。
  • 尝试使用几个不同的图像。 Tkinter PhotoImage 不能识别所有图像格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2013-07-22
  • 2014-06-11
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
相关资源
最近更新 更多