Проблема с отображением изображений, полученных в байтовом формате с сервера - PullRequest
0 голосов
/ 28 сентября 2011

Я получаю несколько файлов значков (92X92) с сервера.Мне нужно проанализировать их и сохранить их в словаре, а затем отобразить их в пользовательском интерфейсе.Я использую следующий код для получения имени файла и для других действий:

System.Windows.Media.Imaging.BitmapImage icon = null;
using (AutoResetEvent are = new AutoResetEvent(false))
{
    System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
    {
        MemoryStream byteStream = new MemoryStream(resp);
        byteStream.Write(resp, 0, resp.Length);
        icon = new BitmapImage();
        icon.SetSource(byteStream);
        Console.WriteLine(icon.PixelHeight + ":" + icon.PixelWidth);

        string[] iconname = entry.Name.Split(new char[] { '-' });
        string newimagename = iconname[1];

        are.Set();
        string[] newname = entry.Name.Split(new char[] { '-', '.' });
        iconDict.Add(newimagename, icon);
    });
    are.WaitOne();
    //string[] newname = entry.Name.Split(new char[] { '-', '.' });
    //string newFileName = newname[1];
    //iconDict.Add(newFileName, icon);
}

Теперь моя проблема в том, что я не могу получить Uri и даже не получаю значок (но когда я ставлюточка останова n chk высота и ширина 92X92);когда я пытаюсь отобразить его, я получаю пустое пространство вместо изображений.Я связываю эти изображения со списком вместе с их именем, которое я получаю.Имена отображаются без проблем.

1 Ответ

0 голосов
/ 29 сентября 2011

изменений, которые я сделал;

 using (AutoResetEvent are = new AutoResetEvent(false))
 {
  System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
   {
     MemoryStream byteStream = new MemoryStream(resp);
     byteStream.Write(resp, 0, resp.Length);
     string[] iconname = entry.Name.Split(new char[] { '-' });
     string newimagename = iconname[1];

     Uri icon_url = new Uri(newimagename, UriKind.RelativeOrAbsolute);
     icon = new BitmapImage(icon_url);
     imag = new Image();
     imag.Source = icon;
     sourceofImage = icon.UriSource.ToString();
     icon.SetSource(byteStream);
     Console.WriteLine(icon.PixelHeight + ":" + icon.PixelWidth);
     are.Set();
     // string[] newname = entry.Name.Split(new char[] { '-', '.' });
    // iconDict.Add(sourceofImage, icon);
    });
    are.WaitOne();
    string[] newname = entry.Name.Split(new char[] { '-', '.' });
    string newFileName = newname[1];
    iconDict.Add(newFileName, icon);
   }
...