如何以编程方式检查 Google 用户的个人资料图片是否不是默认图片?
How can I programmatically check if a Google User's profile picture isn't default?
A Google 用户头像默认为https://yt3.ggpht.com/-_fExgATRXLY/AAAAAAAAAAI/AAAAAAAAAAA/-fmo8LhN7Pg/s240-c-k-no-rj-c0xffffff/photo.jpg
我想根据图片的 URL 检查用户是否已将他们的图片更新为默认图片以外的内容。那可能吗?还有其他方法可以检查吗?
编辑:已设置的 google 个人资料图片的 URL 是这样的: https://yt3.ggpht.com/-zSpYe-dpPNk/AAAAAAAAAAI/AAAAAAAAAAA/EVfQSDPEeQc/s240-c-k-no-rj-c0xffffff/photo.jpg
解决方案使用 Google API
在 Google 响应中,它提供了一个字段 isDefault,如果用户上传了 his/her 图片,则该字段设置为 false。您可以查看文档并尝试示例 api here.
您可以将 userId 添加为 me
并将字段值设置为 image
以尝试该示例。返回的样本值为:-
{
"image": {
"url": "https://lh3.googleusercontent.com/-cXXaVVq8nMM/AAAAAAAAAAI/AAAAAAAAAKI/_Y1WfBiSnRI/photo.jpg?sz=50",
"isDefault": false
}
}
使用图像处理的解决方案
作为一名图像处理工程师,这里有另一个解决方案。在样本 Google 默认图像和下载图像之间计算的简单 similarity/difference 指标可以轻松解决此问题。我发现 Google 可以更改过去一年的默认图片。尽管图像看起来相同,但像素并不完全匹配。因此,归一化误差应该接近于零,但可能并不总是零。
使用 ImageMagick
Imagemagick 是一个 bash 命令图像处理实用程序(它还有很多...)。可以使用以下命令快速检查图像是否为默认图像:-
均方根误差(越小越好):
$> 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.
下载的示例图像
A Google 用户头像默认为https://yt3.ggpht.com/-_fExgATRXLY/AAAAAAAAAAI/AAAAAAAAAAA/-fmo8LhN7Pg/s240-c-k-no-rj-c0xffffff/photo.jpg
我想根据图片的 URL 检查用户是否已将他们的图片更新为默认图片以外的内容。那可能吗?还有其他方法可以检查吗?
编辑:已设置的 google 个人资料图片的 URL 是这样的:https://yt3.ggpht.com/-zSpYe-dpPNk/AAAAAAAAAAI/AAAAAAAAAAA/EVfQSDPEeQc/s240-c-k-no-rj-c0xffffff/photo.jpg
解决方案使用 Google API 在 Google 响应中,它提供了一个字段 isDefault,如果用户上传了 his/her 图片,则该字段设置为 false。您可以查看文档并尝试示例 api here.
您可以将 userId 添加为 me
并将字段值设置为 image
以尝试该示例。返回的样本值为:-
{
"image": {
"url": "https://lh3.googleusercontent.com/-cXXaVVq8nMM/AAAAAAAAAAI/AAAAAAAAAKI/_Y1WfBiSnRI/photo.jpg?sz=50",
"isDefault": false
}
}
使用图像处理的解决方案
作为一名图像处理工程师,这里有另一个解决方案。在样本 Google 默认图像和下载图像之间计算的简单 similarity/difference 指标可以轻松解决此问题。我发现 Google 可以更改过去一年的默认图片。尽管图像看起来相同,但像素并不完全匹配。因此,归一化误差应该接近于零,但可能并不总是零。
使用 ImageMagick
Imagemagick 是一个 bash 命令图像处理实用程序(它还有很多...)。可以使用以下命令快速检查图像是否为默认图像:-
均方根误差(越小越好):
$> 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.
下载的示例图像