Получение размера загруженного изображения в Silverlight - PullRequest
1 голос
/ 14 ноября 2009

Если у меня есть элемент управления Silverlight Image, который загружается с полного URL-адреса, как я могу получить размер (в байтах) загруженного изображения без повторного веб-вызова?

В источнике Image или BitmapImage я не могу найти ничего, что могло бы сказать мне. И даже событие DownloadProgress на BitmapImage дает только процент.

1 Ответ

0 голосов
/ 16 ноября 2009

Я никогда не замечал этого раньше, но это своего рода странный пробел в рамках ...

Вероятно, вам придется загрузить изображение самостоятельно, используя объект WebClient. Это даст вам поток байтов. Вы можете проверить длину потока, а затем создать растровое изображение из потока.

Код для настройки веб-клиента и начала загрузки (обратите внимание, это асинхронный вызов, поэтому мы назначаем обработчик событий для запуска при завершении загрузки.)

WebClient wc = new WebClient();
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
Uri someImageUri = new Uri("http://www.somesite.com/someimage.jpg");
wc.OpenReadAsync(someImageUri);

Вот пример того, как может выглядеть метод обработчика событий:

   void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        System.IO.Stream imageStream = e.Result;
        long imageSize = imageStream.Length;
        BitmapImage bi = new BitmapImage();
        bi.SetSource(imageStream);
        Image image = new Image();
        image.Source = bi;
    }

Очевидно, что если у вас уже есть элемент управления изображением в вашей форме, вам не нужно создавать новый или если вы действительно хотите его создать, вам придется добавить его в родительскую панель какого-либо ...

~ Chris

...