2013-04-25 11 views
13

Ich konvertiere ein Bild in base64 Zeichenfolge und sende es von Android-Gerät an den Server. Jetzt muss ich diese Zeichenfolge wieder in ein Bild ändern und in der Datenbank speichern.Wie base64 Zeichenfolge in Bild konvertieren?

Irgendwelche Hilfe?

+1

Wenn Sie wissen, wie etwas zu Base64 konvertieren, sicher wissen, wie es zurück zu konvertieren? Es ist das gleiche Modul. – Cairnarvon

+1

Nun, kehren Sie einfach um, was Sie getan haben, als Sie von image zu base64 konvertiert haben. Da Sie keine Details angegeben haben, wird niemand in der Lage sein, genauer zu sein. –

Antwort

35

Try this:

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 ... was bedeutet "wb" ?! – omarsafwany

+4

@omarsafwany Es bedeutet "w" rite und "b" inary http://stackoverflow.com/questions/2665866/what-is-the-wb-mean-in-this-code-using-python – HydrUra

+0

@ runn: Vielen Dank für diese Zeilen! Ich weiß, Kommentare werden nicht gemacht, um Danke zu sagen, aber Sie sparen wirklich meine Zeit! – HydrUra

0

Dies sollte den Trick:

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

Verwenden Sie einfach die Methode .decode('base64') und glücklich zu sein, gehen.

Sie müssen auch die MIME-Typ/Erweiterung des Bildes zu erkennen, wie man es richtig sparen kann, in einem kurzen Beispiel können Sie den Code für eine django Ansicht verwenden:

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() 

Und Danach verwenden Sie die $ Datei wie Sie wollen.

Einfach. Sehr einfach. ;)

0

Falls Sie das Bild angezeigt werden sollen, ohne speichern:

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) 
Verwandte Themen