当前位置:  开发笔记 > 编程语言 > 正文

Windows上的python中的base64 png

如何解决《Windows上的python中的base64png》经验,为你挑选了2个好方法。

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

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

以上在Linux和OSX中工作正常,但在Windows上它将编码前几个字符然后缩短.为什么是这样?



1> Miles..:

以二进制模式打开文件:

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

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



2> Andrew Dalke..:

为了增加Miles的答案,PNG文件中的前八个字节是专门设计的:

89 - 第一个字节是检查第8位是否已被剥离

"PNG" - 让有人读到它是PNG格式

0d 0a - DOS行结束指示符,用于检查是否存在DOS-> unix转换

1a - DOS文件结束字符,用于检查文件是否以二进制模式打开

0a - unix行尾字符,检查是否有unix-> DOS转换

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

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有