使用 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();
}

希望对您有所帮助,抱歉英语不好。