2015-05-16 10 views
8

Sto usando requests per ottenere l'immagine dall'URL remoto. Dal momento che le immagini saranno sempre 16x16, voglio convertirle in base64, in modo che io possa incorporarle in seguito per l'utilizzo nel tag HTML img.Python richiede l'immagine base64

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

L'uscita per response è:

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

La parte HTML è:

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

Ma l'immagine non viene visualizzata.

Come posso codificare in modo corretto base-64 il response?

+1

Qual è la tua domanda? – Andy

+1

Penso che sia "Ho un' str' con (con i dati di immagine in esso, ma che non è veramente mater) .Come posso codificarlo in Base 64 per poter creare un URI di dati da esso? " –

risposta

12

penso che sia solo

import base64 
import requests 

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

Supponendo content-type è impostato.

+2

Funziona come previsto! Ho solo bisogno di cambiare 'base64.b64encode (response.content))' a 'str (base64.b64encode (r.content) .decode (" utf-8 ")))'. Grazie! – nickbusted

+0

Sono davvero sorpreso che tu abbia dovuto farlo, ma i tipi che ti vengono restituiti da funzioni come 'b64encode()' e i tipi di urllib necessari possono sorprenderti. Inoltre, questo è Python 3? –

+0

Sì, è Python 3 – nickbusted

2

È possibile utilizzare il pacchetto base64.

import requests 
import base64 

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