2013-12-08 107 views
1

我使用requests模塊連接到一個返回一個PNG圖像的php腳本。如果我這樣做:Python將二進制圖像(PNG)數據寫入文件

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,則可以在保存後在同一圖像查看器中查看它。所以我猜測我將這些圖像數據寫入文件的方式存在問題。 有沒有其他辦法可以做到這一點?

回答

4

r.text不是的二進制數據。該屬性爲您提供瞭解碼文本,一個Unicode值。

你想要用r.content代替,或的圖像文件從r.raw文件對象設置stream=True和複製。