我有一些使用该问题的解决方案来验证某个图像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;
}
}
如果不存在图片,此功能将返回false,并且效果很好。
现在的问题是该功能开始返回true,我发现根本原因是,如果我搜索的内容不存在,它们已更改后端以返回默认图像。
所以我的新要求是如何检查返回的图像不是默认图像(因此我可以复制以前的验证)?
可能不是最好的解决方案,但是我的第一个想法是将默认图像转换为字节数组变量,然后下载要检查的图像,然后将其转换为字节数组。然后,您可以比较它们:
要比较的代码(仅来自.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();
}
希望它有帮助,对不起英语不好。