2013-04-25 10 views
13

Sto convertendo un'immagine in base64 stringa e inviandola dal dispositivo Android al server. Ora, ho bisogno di cambiare quella stringa di nuovo su un'immagine e salvarla nel database.Come convertire la stringa base64 in immagine?

Qualsiasi aiuto?

+1

Se sai come convertire qualcosa da Base64, sicuramente si sa come convertire indietro? È lo stesso modulo. – Cairnarvon

+1

Bene, è sufficiente invertire ciò che hai fatto quando hai convertito da immagine a base64. Dal momento che non hai fornito dettagli, nessuno sarà in grado di essere più specifico di quello. –

risposta

35

Prova questa:

import base64 
imgdata = base64.b64decode(imgstring) 
filename = 'some_image.jpg' # I assume you have a way of picking unique filenames 
with open(filename, 'wb') as f: 
    f.write(imgdata) 
# f gets closed when you exit the with statement 
# Now save the value of filename to your database 
+0

@rmunn ... a cosa serve "wb" ?! – omarsafwany

+4

@omarsafwany Significa "w" rito e "b" ineo http://stackoverflow.com/questions/2665866/questo-è-il-wb-mean-in-this-code-using-python – HydrUra

+0

@rmunn: Grazie mille per quelle righe! Lo so, i commenti non sono fatti per dire grazie, ma tu mi risparmi davvero il tempo! – HydrUra

0

Questo dovrebbe fare il trucco:

image = open("image.png", "wb") 
image.write(base64string.decode('base64')) 
image.close() 
1

Basta utilizzare il metodo .decode('base64') e andare per essere felice.

È necessario, inoltre, di rilevare il tipo MIME/estensione dell'immagine, come è possibile salvare correttamente, in un breve esempio, è possibile utilizzare il codice qui sotto per una visione django:

def receiveImage(req): 
    image_ext = req.REQUEST["image_filename"] # A field from the Android device 
    image_data = req.REQUEST["image_data"].decode("base64") # The data image 
    filehandler = fopen($image_ext, "wb+") 
    filehandler.write(image_data) 
    filehandler.close() 

E , dopo questo, usa il file $ come vuoi.

Semplice. Molto semplice. ;)

0

Nel caso in cui si desidera visualizzare l'immagine senza salvare:

from PIL import Image 
import cv2 
    # Take in base64 string and return cv image 
    def stringToRGB(base64_string): 
     imgdata = base64.b64decode(str(base64_string)) 
     image = Image.open(io.BytesIO(imgdata)) 
     return cv2.cvtColor(np.array(image), cv2.COLOR_BGR2RGB) 
Problemi correlati