silverlight-4.0 bytearray base64 system.drawing

Silverlight 4.0: ¿Cómo convertir un byte[] a una imagen?



silverlight-4.0 bytearray (3)

De otra manera:

public static BitmapImage ConvertStreamToImage(Stream stream) { BitmapImage _resultImage = new BitmapImage(); _resultImage.SetSource(stream); return _resultImage; }

que usa estos espacios de nombres: using System.IO; using System.Windows.Media.Imaging;

public Image Base64ToImage(string base64String) { // Convert Base64 String to byte[] byte[] imageBytes = Convert.FromBase64String(base64String); MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length); // Convert byte[] to Image ms.Write(imageBytes, 0, imageBytes.Length); System.Drawing.Image image = System.Drawing.Image.FromStream(ms, true); return image; }

Quiero convertir el byte [] en imagen, sin embargo, System.Drawing.Image no es compatible con Silverlight. ¿Alguna alternativa?


Debe crear un ImageSource y asignarlo a un control Image o usar un ImageBrush para establecerlo en el fondo. BitmapImage se encuentra en el espacio de nombres System.Windows.Media.Imaging.

byte[] imageBytes = Convert.FromBase64String(base64String); using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length)) { BitmapImage im = new BitmapImage(); im.SetSource(ms); this.imageControl.Source = im; }

o para el ImageBrush

byte[] imageBytes = Convert.FromBase64String(base64String); using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length)) { BitmapImage im = new BitmapImage(); im.SetSource(ms); imageBrush.ImageSource = im; this.BoxBorder.Background = imageBrush; }


este código puede convertir la imagen a byte []

BitmapImage imageSource = new BitmapImage(); Stream stream = openFileDialog1.File.OpenRead(); BinaryReader binaryReader = new BinaryReader(stream); currentImageInBytes = new byte[0]; currentImageInBytes = binaryReader.ReadBytes((int)stream.Length); stream.Position = 0; imageSource.SetSource(stream);

y este código puede convertir el byte [] a imagen

public void Base64ToImage(byte[] imageBytes) { using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length)) { BitmapImage im = new BitmapImage(); im.SetSource(ms); img.Source = im; } }