Windows上的python中的base64 png

时间:2009-03-10 19:25:43

标签: python windows base64

如何在Windows上使用python将png图像编码为base64?

iconfile = open("icon.png")
icondata = iconfile.read()
icondata = base64.b64encode(icondata)

以上在Linux和OSX中运行良好,但在Windows上它将编码前几个字符然后缩短。这是为什么?

2 个答案:

答案 0 :(得分:26)

Open the file in binary mode

open("icon.png", "rb")

我对Windows并不是很熟悉,但我想现在发生的事情是该文件在文本模式下打开时包含Windows is interpreting as the end of the file(由于遗留原因)的字符(0x1A)。另一个问题是在Windows上以文本模式打开文件(没有'b')将导致行结尾被重写,这通常会破坏二进制文件,其中这些字符实际上并不表示行的结尾。

答案 1 :(得分:9)

为了增加Miles的答案,first eight bytes in a PNG file是专门设计的:

  • 89 - 第一个字节是检查 第8位尚未剥离
  • “PNG” - 让某人读到它是一个 PNG格式
  • 0d 0a - DOS结尾 指标,检查是否有 DOS-> unix转换
  • 1a - DOS文件结束字符, 检查文件是否已打开 二进制模式
  • 0a - unix行尾字符,到 检查是否有unix-> DOS 转化

您的代码按照设计停在1a处。