如何以编程方式检查 Google 用户的个人资料图片是否不是默认的?

Jon*_*ant 5 url google-api google-plus

Google 用户的个人资料图片默认为 https://yt3.ggpht.com/-_fExgATRXLY/AAAAAAAAAAI/AAAAAAAAAA/-fmo8LhN7Pg/s240-ck-no-rj-c0xffffff/photo.jpghttps://yt3.ggpht.com/-_fExgATRXLY/AAAAAAAAAAI/AAAAAAAAAAA/-fmo8LhN7Pg/s240-c-k-no-rj-c0xffffff/photo.jpg

我想检查用户是否根据图片的 URL 将他们的图片更新为默认值以外的内容。那可能吗?有没有其他方法可以检查?

编辑:已设置的谷歌个人资料图片的 URL 是这样的: https://yt3.ggpht.com/-zSpYe-dpPNk/AAAAAAAAAAI/AAAAAAAAAA/EVfQSDPEeQc/s240-ck-no-rj-c0xffffff/photo.jpg https://yt3.ggpht.com/-zSpYe-dpPNk/AAAAAAAAAAI/AAAAAAAAAAA/EVfQSDPEeQc/s240-c-k-no-rj-c0xffffff/photo.jpg

sau*_*hts 4

使用 Google API 的解决方案 在 Google 响应中,它提供了一个字段 isDefault,如果用户上传了他/她的图片,则该字段设置为 false。您可以查看文档并尝试此处的示例 api 。

您只需添加 userId asme并将字段值设置为image即可尝试该示例。返回的样本值是:-

{
 "image": {
  "url": "https://lh3.googleusercontent.com/-cXXaVVq8nMM/AAAAAAAAAAI/AAAAAAAAAKI/_Y1WfBiSnRI/photo.jpg?sz=50",
  "isDefault": false
 }
}
Run Code Online (Sandbox Code Playgroud)

使用图像处理的解决方案

作为一名图像处理工程师,这是另一种解决方案。在示例 Google 默认图像和下载的图像之间计算简单的相似性/差异度量可以轻松解决此问题。我发现谷歌在过去的一年里改变了默认图片。尽管图像看起来相同,但像素并不完美匹配。因此,归一化误差应接近于零,但可能并不总是为零。

使用 ImageMagick

Imagemagick 是一个 bash 命令图像处理实用程序(还有更多...)。人们可以使用以下命令快速检查图像是否是默认图像:-

均方根误差(越小越好):

$> compare -metric RMSE defaultProfilePic1.jpg defaultProfilePic2.jpg NULL:
$> 242.453 (0.0036996)
Run Code Online (Sandbox Code Playgroud)

在上面的命令中,NULL表示将输出定向到控制台。括号中的输出是标准化误差,正如您所看到的,它接近于 0。0.01-0.03 的阈值应该足以开始。

归一化互相关(越接近1越好):

反之亦然,可以使用相似性度量来查看标准化输出是否足够接近 1。

$> compare defaultProfilePic1.jpg defaultProfilePic2.jpg -metric NCC NULL:
$> 0.998602
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请参见此处

以下是使用 Google Api 下载的示例图像。

默认图1

默认图2