Silverlight 4.0: как преобразовать байт [] в изображение? - PullRequest
16 голосов
/ 15 марта 2010
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;
    }

Я хочу преобразовать byte [] в изображение, однако System.Drawing.Image не поддерживается в Silverlight. Любая альтернатива?

Ответы [ 3 ]

22 голосов
/ 15 марта 2010

Вам необходимо создать ImageSource и назначить его элементу управления Image или использовать ImageBrush для установки на фоне. BitmapImage находится в пространстве имен 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;
        }

или для 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;
        }
3 голосов
/ 28 июня 2011

этот код может преобразовать изображение в байт []

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

и этот код может конвертировать байт [] в изображение

public void Base64ToImage(byte[] imageBytes)
{

    using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
    {
        BitmapImage im = new BitmapImage();
        im.SetSource(ms);
        img.Source = im;
    }
}
0 голосов
/ 16 марта 2011

Другой способ:

    public static BitmapImage ConvertStreamToImage(Stream stream)
    {
        BitmapImage _resultImage = new BitmapImage();

        _resultImage.SetSource(stream);

        return _resultImage;
    }

, который использует эти пространства имен: using System.IO; using System.Windows.Media.Imaging;

...