Konwertuję obraz na ciąg znaków base64 i wysyłam go z urządzenia z systemem Android na serwer. Teraz muszę zmienić ten ciąg z powrotem na obraz i zapisać go w bazie danych.Jak przekonwertować ciąg base64 na obraz?
Każda pomoc?
Konwertuję obraz na ciąg znaków base64 i wysyłam go z urządzenia z systemem Android na serwer. Teraz muszę zmienić ten ciąg z powrotem na obraz i zapisać go w bazie danych.Jak przekonwertować ciąg base64 na obraz?
Każda pomoc?
Spróbuj tego:
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
@rmunn ... po co jest "wb" ?! – omarsafwany
@omarsafwany To znaczy "w" rytuał i "b" stały http://stackoverflow.com/questions/2665866/what-is-the-wb-mean-in-this-code-using-python – HydrUra
@rmunn: Dziękuję bardzo za te linie! Wiem, że komentarze nie są wymawiane dzięki, ale naprawdę oszczędzasz mój czas! – HydrUra
To powinno załatwić sprawę:
image = open("image.png", "wb")
image.write(base64string.decode('base64'))
image.close()
Wystarczy użyć metody .decode('base64')
i iść, aby być szczęśliwym.
Trzeba też wykryć mimeType/rozszerzenie obrazu, jak można go zapisać poprawnie, w krótkim przykład, można użyć poniższy kod dla widoku 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()
I , po tym użyj pliku $, jak chcesz.
Proste. Bardzo prosta. ;)
W przypadku chcesz wyświetlić ten obraz bez zapisywania:
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)
Jeśli wiesz jak przerobić coś base64, z pewnością wiesz jak przekształcić go z powrotem? To ten sam moduł. – Cairnarvon
Cóż, po prostu odwróć to, co zrobiłeś po konwersji z obrazu na base64. Ponieważ nie podałeś żadnych szczegółów, nikt nie będzie mógł być bardziej konkretny. –