如何在 Windows 上使用 python 将 png 图像编码为 base64?
iconfile = open("icon.png")
icondata = iconfile.read()
icondata = base64.b64encode(icondata)
以上在 Linux 和 OSX 中运行良好,但在 Windows 上它将编码前几个字符,然后缩短。为什么是这样?
open("icon.png", "rb")
我对 Windows 不是很熟悉,但我想发生的事情是文件包含一个字符 (0x1A),当它以文本模式打开时, Windows 将其解释为文件的结尾(出于遗留原因)。另一个问题是在 Windows 上以文本模式(不带“b”)打开文件会导致行尾被重写,这通常会破坏二进制文件,其中这些字符实际上并不表示行尾。
为了增加 Miles 的答案,PNG 文件中的前八个字节是专门设计的:
您的代码按照设计在 1a 处停止。