仅当url返回图像类型时才创建图像

时间:2016-01-04 05:52:54

标签: c# windows-phone-8.1 winrt-xaml

我正在尝试从网址中获取图片。如果该URL上不存在该图像,那么该url将返回一个静态html页面。

这是我用来创建图片的代码

img_profile.ImageSource = new BitmapImage(new Uri("www.someurl.com/xyz.jpg"));

img_profile是我的图像控件ID。

如果url返回静态html页面,那么我想显示静态图像。

我正在创建Windows通用应用。

3 个答案:

答案 0 :(得分:1)

尝试以下代码。

你的代码

string url = @"www.someurl.com/xyz.jpg";
if (IsImageUrl(url))
    img_profile.ImageSource = new BitmapImage(new Uri(url));
else
    img_profile.ImageSource = new BitmapImage(new Uri("default_image.jpg"));

创建可以检查url是否为图像的函数?

using System.Net;
using System.Globalization;

bool IsImageUrl(string URL)
{
    var req = (HttpWebRequest)HttpWebRequest.Create(URL);
    req.Method = "HEAD";
    using (var resp = req.GetResponse())
    {
        return resp.ContentType.ToLower(CultureInfo.InvariantCulture)
                   .StartsWith("image/");
    }
}

请参阅此问题Detecting image URL in C#/.NET

答案 1 :(得分:1)

您可以使用ContentType检查图片或静态HTML内容。

创建一个检查ContentType的方法。

public static bool IsValidImage(string url)
       {
           var request = (HttpWebRequest)HttpWebRequest.Create(url);
           request.Method = "HEAD";
           using (var response = request.GetResponseAsync().Result)
           {
               return response.ContentType.ToLower().StartsWith("image/");

           }
       }

此方法返回false,然后您可以显示默认图像。

答案 2 :(得分:0)

**BitmapImage bmp = new BitmapImage(new Uri("www.someurl.com/xyz.jpg"));
if(File.Exists("www.someurl.com/xyz.jpg"))    
{   
            img_profile.ImageSource=bmp;   
}  
else  
{      
           img_profile.ImageSource= new BitmapImage(new Uri("Static image path"));  
}  
I hope it will work...**