miércoles, 9 de septiembre de 2009

Deserializar imagen de Base64 y desplegarla

Recientemente publiqué una sencilla entrada en donde explicaba cómo guardar imágenes en un campo BLOB/VARBINARY(MAX) y luego cómo leer la imagen.
Aquí :
Guardar Imagen en BLOB/VARBINARY(MAX)

Resulta que la idea principal de esto era leer dicha imagen del campo VARBINARY(MAX), serializarlo a Base64 y exponerlo en un método de un Web Service. Hasta ahí llegaba la funcionalidad de lo que estabamos haciendo. Sin embargo la parte que iba consumir el Web Service nos preguntó cómo hacerle para deserializar dicho string y mostrar la imagen en pantalla sin pasar por guardar los bytes en un archivo y abrirlo con un Image.

Parece bastante obvio y seguramente para muchos lo será pero no está demás exponer lo siguiente:

C#

1:        // Convertimos el string codificado en base64 a bytes  
2:        byte[] bytFoto = Convert.FromBase64String(strFoto);         
3:    
4:        // Y creamos un stream en memoria que accedera los bytes  
5:        MemoryStream msFoto = new MemoryStream(bytFoto, 0, bytFoto.Length);  
6:    
7:        // De esta manera podemos crear una imagen a partir de los bytes  
8:        Image imgFoto = Image.FromStream(msFoto);  
9:    
10:        // Y desplegarla en la pantalla en hipotético picturebox   
11:        pictureBox1.Image = imgFoto;  
12:    
13:        // o grabarla en disco con:  
14:        //imgFoto.Save("C:\temp\foto_ws.jpg", ImageFormat.Jpeg);  
15:    
16:        msFoto.Close();  
17:    


Sencillo tal vez, pero se me hizo interesante hacerlo y quise exponerlo aquí.

1 comentario:

Anónimo dijo...

hola mucgas gracias por tu informacion es muy interesante, pero no se si podrias hacer u ejemplo completo, soy nuevo en esta area