2015-05-16 55 views
8

我使用requests從遠程URL獲取圖像。由於圖像將始終爲16x16,因此我想將它們轉換爲base64,以便稍後可以將它們嵌入到HTML img標記中。Python請求base64圖像

import requests 
import base64 
response = requests.get(url).content 
print(response) 
b = base64.b64encode(response) 
src = "data:image/png;base64," + b 

輸出爲response是:

response = b'GIF89a\x80\x00\x80\x00\xc4\x1f\x00\xff\xff\xff\x00\x00\x00\xff\x00\x00\xff\x88\x88"""\xffff\... 

HTML部分是:

<img src="{{src}}"/> 

但不顯示圖像。

如何正確地base-64編碼response

+1

你的問題是什麼? – Andy

+1

我認爲這是「我有一個str(帶有圖像數據,但實際上並不重要)。我如何對base-64進行編碼,以便我可以從中構建數據URI?」 –

回答

12

我認爲這只是

import base64 
import requests 

response = requests.get(url) 
uri = ("data:" + 
     response.headers['Content-Type'] + ";" + 
     "base64," + base64.b64encode(response.content)) 

假設content-type設置。

+2

這按預期工作!我只需要將'base64.b64encode(response.content))'更改爲'str(base64.b64encode(r.content).decode(「utf-8」)))''。謝謝! – nickbusted

+0

我真的很驚訝你不得不那樣做,但是你從類似'b64encode()'和類型urllib所獲得的類型可以讓你感到驚訝。另外,這是Python 3嗎? –

+0

是的,它是Python 3 – nickbusted

2

您可以使用base64軟件包。

import requests 
import base64 

response = requests.get(url).content 
print(response) 
b64response = base64.b64encode(response) 
print b64response