2012-10-15 13 views
8

Wysyłam kodowany obraz base64 po stronie klienta przy użyciu javascript (Tworzę aplet uploadera zrzutów ekranu dla aplikacji asp.net przy użyciu http://supa.sourceforge.net/), a to wysyła żądanie ajax do serwera, aby zapisać obraz. Na serwerze używam HttpContext w GenericHanlder w aplikacji asp.net.Podstawa dekodowania64 Strumień obrazu

Jak przekonwertować dane obrazu z HttpContext na obraz na serwerze?

Odpowiedz

35

Po pierwsze, trzeba przekonwertować bazę 64 z powrotem w bajtach:

byte[] data = System.Convert.FromBase64String(fromBase64); 

Następnie można załadować go do instancji obrazu:

MemoryStream ms = new MemoryStream(data); 
Image img = Image.FromStream(ms); 

Jeśli chcesz zapisać je do zamiast tego należy użyć pliku System.IO.File.WriteAllBytes

+0

Zapoznaj się z wpisem MSDN dla właściwości InputStream. Wyjaśnia, w jaki sposób wyodrębnić dane do ciągu: http://msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream.aspx Po wprowadzeniu danych do łańcucha, należy przekazać go do FromBase64String metoda jak pokazano powyżej. –

4

Potrzebowałem zrobić coś podobnego, ale chciałem pracować bezpośrednio z InputStream, więc użyłem tego do dekodowania:

// using System.Security.Cryptography 
var stream = new CryptoStream(Request.InputStream, new FromBase64Transform(), CryptoStreamMode.Read); 
var img = Image.FromStream(stream); 
Powiązane problemy