Python将二进制图像(PNG)数据写入文件

时间:2013-12-08 04:04:11

标签: python file-io png python-requests

我正在使用requests模块连接到一个返回PNG图像的php脚本。如果我这样做:

import requests
r=requests.get("http://location/script.php", cookies=cookies)
fp = open("image.png", "wb")
fp.write(r.text) #r.text is the binary data for the PNG returned by that php script
fp.close()

但是在编写时它给出了一个UnicodeEncodeError,因此我使用了fp.write(r.text.encode("utf-8"))而不是fp.write(r.text)。 并且文件已创建,但我无法在图像查看器中查看它(它会出错)。但是,如果我右键单击并保存该脚本在Firefox中返回的PNG,我可以在保存后在同一个图像查看器中查看它。所以我猜我将图像数据写入文件的方式存在问题。 还有其他方法可以吗?

1 个答案:

答案 0 :(得分:4)

r.text 二进制数据。该属性为您提供解码后的文本,即Unicode值。

您希望使用r.content代替图像转换为文件设置stream=True并从r.raw文件对象进行复制。