从GoogleSignInAccount获取高质量的个人资料照片

sta*_*c91 4 android google-api google-signin

在我的Android应用程序中,为了通过谷歌帐户进行身份验证,我按照官方教程https://developers.google.com/identity/sign-in/android/people#retrieve_profile_information_for_a_signed-in_user进行操作.

如上所述,要检索个人资料图片,我使用"GoogleSignInAccount"类的" getPhotoUrl() "方法.例:

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount acct = result.getSignInAccount();
String personName = acct.getDisplayName();
String personEmail = acct.getEmail();
String personId = acct.getId();
Uri personPhoto = acct.getPhotoUrl();
Run Code Online (Sandbox Code Playgroud)

问题是,我通过这个网址获得图像质量很差(小尺寸).

截图示例

我该如何解决这个问题?

Bha*_*esh 9

如果您的照片网址有sz=50密钥(图片大小为50或其他).然后将尺寸更换为最高尺寸.喜欢sz=240

我不确定你的照片网址是否有sz密钥,因为我使用的PersonAPI有获取用户详细信息的sz密钥,getUrl()现在已弃用.

更新: Person.Image - 官方文档,说明如何获得不同尺寸的头像

此人的个人资料照片的网址.要调整图像大小并将其裁剪为正方形,请附加查询字符串?sz = x,其中x是每边的像素尺寸


然而,正如@ stackpic91所说,新的API GoogleSignInAccount.getPhotoUrl()已将S96-c其值更改为最高以获得大图像S240-c

  • 没有办法在方法getPhotoUrl()中选择特定维度,但我注意到在URL的末尾有类似"S96-c/photo.jpg"的内容.例如在"s500-c"中更改它我可以获得500x500大小的图像.我认为这不是正确的方法,但我找不到另一种解决方案. (3认同)

Sta*_*nzl 6

使用您选择的任何加载器(Glide/Picasso)加载图像时,只需对 url 字符串执行以下操作:

avatarUrl.replace("s96-c", "s192-c", true)
Run Code Online (Sandbox Code Playgroud)

或者

avatarUrl.replace("s96-c", "s384-c", true)
Run Code Online (Sandbox Code Playgroud)

为了更好的质量