none
Считать JPEG из MemoryStream [C#] [WPF] RRS feed

  • Вопрос

  • Здравствуйте. Вот опять запутался и ничего не могу придумать. Есть элемент Image, и есть MemoryStream, в котором лежит byte[] скачанной картинки в формате JPG.

    Вопрос: как из потока поместить эту картинку в переменную, чтобы потом эту переменную присвоить в Image и посмотреть на картинку?


    DreamSpark Premium User

    29 июня 2012 г. 11:12

Ответы

  • Jpg сначало нужно декодировать в обычный формат

    JpegBitmapDecoder decoder = new JpegBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
    BitmapSource bitmapSource = decoder.Frames[0];
    Image.Source = bitmapSource;
    • Помечено в качестве ответа asdfxcbneftyherwe 29 июня 2012 г. 13:29
    29 июня 2012 г. 12:36
  • Всё, решил проблему. Достаточно было сделать так:

    byte[] jp = ms.ToArray();
                MemoryStream ms2 = new MemoryStream(jp);
                JpegBitmapDecoder decoder = new JpegBitmapDecoder(ms2, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);


    DreamSpark Premium User

    • Помечено в качестве ответа asdfxcbneftyherwe 29 июня 2012 г. 13:29
    29 июня 2012 г. 13:29

Все ответы

  • BitmapImage imagesource = new BitmapImage();
    imagesource.BeginInit();
    imagesource.CacheOption = BitmapCacheOption.OnLoad;
    imagesource.UriSource = null;
    imagesource.StreamSource = memorystream;
    imagesource.EndInit();
    Image.Source = imagesource;

    Попробуйте вот так
    29 июня 2012 г. 11:33
  • Для jpg почему-то не работает.

    DreamSpark Premium User

    29 июня 2012 г. 12:27
  • Jpg сначало нужно декодировать в обычный формат

    JpegBitmapDecoder decoder = new JpegBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
    BitmapSource bitmapSource = decoder.Frames[0];
    Image.Source = bitmapSource;
    • Помечено в качестве ответа asdfxcbneftyherwe 29 июня 2012 г. 13:29
    29 июня 2012 г. 12:36
  • Все равно падает с непонятным исключением даже на тестовой программе. :(

    DreamSpark Premium User

    29 июня 2012 г. 12:47
  • Какой исключение выбрасывает программа?
    29 июня 2012 г. 12:52
  • Вот код тестового приложения:

    namespace FileStreamTest
    {
        /// <summary>
        /// Логика взаимодействия для MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                MemoryStream ms = new MemoryStream();
                using (FileStream fileStream = new FileStream(@"D:\test.jpg", FileMode.Open, FileAccess.Read))
                {
                    byte[] buffer = new byte[4096];
                    int bytesRead = 0;
                    while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        ms.Write(buffer, 0, bytesRead);
                    }
                }
    
                JpegBitmapDecoder decoder = new JpegBitmapDecoder(ms, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
                BitmapSource bitmapSource = decoder.Frames[0];
                image1.Source = bitmapSource;
            }
        }
    }


    DreamSpark Premium User

    29 июня 2012 г. 13:11
  • Всё, решил проблему. Достаточно было сделать так:

    byte[] jp = ms.ToArray();
                MemoryStream ms2 = new MemoryStream(jp);
                JpegBitmapDecoder decoder = new JpegBitmapDecoder(ms2, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);


    DreamSpark Premium User

    • Помечено в качестве ответа asdfxcbneftyherwe 29 июня 2012 г. 13:29
    29 июня 2012 г. 13:29
  • Спасибо, что дополнили решение своим.


    Для связи [mail]