将PNG图像编码为Base64时的AttributeError

时间:2018-05-31 04:38:11

标签: python python-3.x encoding base64 attributeerror

我正在尝试使用以下代码将PNG图像编码为Base64:

for files in os.listdir("."):
if files.endswith(".png"):
    pngFile = open(files, 'rb')
    base64data = pngFile.read().encode('base64').replace('\n','')
    base64String = '<image xlink:href="data:image/png;base64,{0}" width="240" height="240" x="0" y="0" />'.format(base64data)

但是当我使用它时会出错:

AttributeError: 'bytes' object has no attribute 'encode'

我尝试了很多像这样的解决方案:  AttributeError: 'bytes' object has no attribute 'encode'; base64 encode a pdf file但它只会引发另一个错误。顺便说一下,我正在使用python 3

2 个答案:

答案 0 :(得分:1)

嗯...我不知道是否应该将此标记为答案,但是我使用Python 2.7使其正常工作。原因不明。

答案 1 :(得分:0)

尝试使用base64库

import base64

with open(files, "rb") as image_file:
    base64data = base64.b64encode(image_file.read())
    base64String = '<image xlink:href="data:image/png;base64,{0}" width="240" height="240" x="0" y="0" />'.format(base64data)