2016-04-30 7 views
4

В моем приложении для Android, чтобы пройти аутентификацию через учетную запись google, я следую этому официальному учебнику https://developers.google.com/identity/sign-in/android/people#retrieve_profile_information_for_a_signed-in_user, и он работает.Получить изображение высокого качества с сайта GoogleSignInAccount

Как указано там, чтобы получить изображение профиля, я использую «класс getPhotoUrl()» класса «GoogleSignInAccount». Пример:

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(); 

проблема является то, что изображение, которое я получаю через этот URL очень низкого качества (малый размер).

Screenshot example

Как я могу исправить эту проблему?

+0

могу я знаю, что URL вы получаете .. значение этого объекта 'personPhoto' – Bharatesh

+0

Официальной документация говорит:«Возвращает URL фотографии из подписанных в пользователе, если пользователь имеет фотографию ...» – stackpic91

+0

да .. этот url заканчивается на 'sz = 50'? .... Опубликовать это изображение url – Bharatesh

ответ

7

Если у вашего фото url есть sz=50 ключ (размер изображения 50 или что-то еще). Затем замените размер на самый высокий. как sz=240

Я не уверен, что ваш URL фотографии имеет sz ключ, потому что я использовал Person API, который имеет sz ключ для getUrl(), чтобы получить информацию о пользователе, который в настоящее время устаревшее.

ОБНОВЛЕНО:Person.Image - официальный документ, который говорит, как получить различные Dimens профильного аватара

URL-адрес лица, фото профиля. Для того, чтобы изменить размер изображения и обрезать его в квадрат, добавьте строку запроса? Sz = х, где х размер в пикселях с каждой стороны


Однако, как @ stackpic91 сказал новый API GoogleSignInAccount.getPhotoUrl() имеет S96-c изменить его значение до самого высокого, чтобы получить увеличенное изображение S240-c

happyCoding;

+3

Не существует способа выбрать конкретное измерение в методе getPhotoUrl(), но я заметил, что в конце URL-адреса есть что-то вроде «S96-c/photo.jpg ». Меняя его, например, в «s500-c», я могу получить изображение размером 500x500. Я думаю, что это не правильный способ, но я не могу найти другого решения. – stackpic91

+0

на самом деле это единственный способ и который является правильным ... google проверяет, какой размер изображения вам нужен, и возвращает те же десятилетия, что и в URL. – Bharatesh

+0

Ok! Спасибо ! – stackpic91