Настройка источника изображений из Интернета - PullRequest
1 голос
/ 17 марта 2012

Я пытаюсь установить источник изображений следующим образом:

    private void buttonGet_Click(object sender, RoutedEventArgs e)
    {
        string website_url =HttpUtility.UrlEncode( textBoxURL.Text);
        WebClient wc = new WebClient();
        wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
        Uri favIconUri = new Uri("http://g.etfv.co/"+ website_url ,UriKind.Absolute);
        wc.OpenReadAsync(favIconUri, wc);

    }
void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        if (e.Error == null && !e.Cancelled)
        {
            try
            {

                BitmapImage image = new BitmapImage();
                image.SetSource(e.Result);
                image1.Source = image;
            }
            catch (Exception ex)
            {
                //Exception handle appropriately for your app  
                int i = 0;
            }
        }
        else
        {
            //Either cancelled or error handle appropriately for your app  
        }
    }
}

Я получаю исключение: {"The request is not supported. "} в строке image.SetSource(e.Result);

URL-адрес текстового поля: "http://google.com" таким образом, сформированный URL-адрес: "http://g.etfv.co/http%3a%2f%2fwww.google.com" Я не могу понять простую вещь.

Я попытался с простым URL-адресом как" http://img.technospot.net/Windows-Phone-7-Theme-Symbian.jpg" (вместо "http://g.etfv.co/foo-bar", и тогда это работает, но некак я кодировал.

Что-то не так?

1 Ответ

4 голосов
/ 17 марта 2012

Ваша проблема в том, что возвращаемое изображение имеет тип "ICO", который не поддерживается BitmapSource.Поддерживаются только PNG и JPEG.

Другие форматы, такие как GIF и ICO, можно прочитать только с помощью специального декодера.

Попробуйте использовать другой сервис, чтобы получить значок:

http://www.getfavicon.org/results.php?url=google.com&t=png

даст вам PNG, который BitmapSource с радостью загрузит.

...