使用 C#,如何检测图像 URL returns 是否与默认图像不同?
Using C#, how can I detect if an Image URL returns something different from a default image?
我有一些代码使用 the solution from this question 来验证某个图像 url 是否存在。
所以我的代码看起来像这样:
private bool PictureExists(string id)
{
string url = "https://www.example.com/profile.do?userid=" + id;
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "HEAD";
bool exists;
try
{
request.GetResponse();
exists = true;
}
catch
{
exists = false;
}
return exists;
}
}
如果图片不存在,此函数将 return 错误,但它工作正常。
现在的问题是函数启动 return 为真,我发现根本原因是他们已将后端更改为 return 默认图像,如果我正在搜索不存在。
所以我的新要求是如何检查图像 returned 是否不是默认图像(这样我就可以复制之前的验证)?
可能不是最好的解决方案,但我的第一个想法是将默认图像转换为字节数组变量,然后下载要检查的图像,并将其转换为字节数组。然后你可以比较它们:
要比较的代码(仅来自 .NET 3.5!):
static public bool ByteArrayCompare(byte[] a1, byte[] a2)
{
return a1.SequenceEqual(a2);
}
将图像转换为字节的代码[]:
static public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
希望对您有所帮助,抱歉英语不好。
我有一些代码使用 the solution from this question 来验证某个图像 url 是否存在。
所以我的代码看起来像这样:
private bool PictureExists(string id)
{
string url = "https://www.example.com/profile.do?userid=" + id;
var request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "HEAD";
bool exists;
try
{
request.GetResponse();
exists = true;
}
catch
{
exists = false;
}
return exists;
}
}
如果图片不存在,此函数将 return 错误,但它工作正常。
现在的问题是函数启动 return 为真,我发现根本原因是他们已将后端更改为 return 默认图像,如果我正在搜索不存在。
所以我的新要求是如何检查图像 returned 是否不是默认图像(这样我就可以复制之前的验证)?
可能不是最好的解决方案,但我的第一个想法是将默认图像转换为字节数组变量,然后下载要检查的图像,并将其转换为字节数组。然后你可以比较它们:
要比较的代码(仅来自 .NET 3.5!):
static public bool ByteArrayCompare(byte[] a1, byte[] a2)
{
return a1.SequenceEqual(a2);
}
将图像转换为字节的代码[]:
static public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
希望对您有所帮助,抱歉英语不好。