如何在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文件中的前八个字节是专门设计的:
89 - 第一个字节是检查第8位是否已被剥离
"PNG" - 让有人读到它是PNG格式
0d 0a - DOS行结束指示符,用于检查是否存在DOS-> unix转换
1a - DOS文件结束字符,用于检查文件是否以二进制模式打开
0a - unix行尾字符,检查是否有unix-> DOS转换
您的代码按照设计停在1a处.