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

时间:2016-07-25 19:51:56

标签: url google-api google-plus

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

我想检查用户是否根据图片的网址将其图片更新为默认图像。那可能吗?还有其他方法可以检查吗?

编辑:已设置的Google个人资料图片的网址为:https://yt3.ggpht.com/-zSpYe-dpPNk/AAAAAAAAAAI/AAAAAAAAAAA/EVfQSDPEeQc/s240-c-k-no-rj-c0xffffff/photo.jpg https://yt3.ggpht.com/-zSpYe-dpPNk/AAAAAAAAAAI/AAAAAAAAAAA/EVfQSDPEeQc/s240-c-k-no-rj-c0xffffff/photo.jpg

1 个答案:

答案 0 :(得分:1)

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

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

{
 "image": {
  "url": "https://lh3.googleusercontent.com/-cXXaVVq8nMM/AAAAAAAAAAI/AAAAAAAAAKI/_Y1WfBiSnRI/photo.jpg?sz=50",
  "isDefault": false
 }
}

使用图像处理的解决方案

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

使用ImageMagick

Imagemagick是一个bash命令Image Processing Utility(它还有很多......)。可以使用以下命令快速检查图像是否为默认图像: -

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

$> compare -metric RMSE defaultProfilePic1.jpg defaultProfilePic2.jpg NULL:
$> 242.453 (0.0036996)

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

归一化的交叉相关(越接近1,越好):

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

$> compare defaultProfilePic1.jpg defaultProfilePic2.jpg -metric NCC NULL:
$> 0.998602

有关详细信息,请参阅here

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

Default Pic1

Default Pic2