Получать фотографии с высоким разрешением, которые были размещены на странице стены / канал
Я получаю свою страницу стены с открытым графиком. И когда кто-то опубликовал фото, я получаю его на JSON
{
"id": "27888702146_10150369820322147",
"from": {
"name": "brocoli",
"category": "Record label",
"id": "27888702146"
},
"message": "Vincent Epplay / David Fenech / Jac Berrocal \u00e0 Beaubourg ce soir, 19h, gratos.",
"picture": "http://photos-f.ak.fbcdn.net/hphotos-ak-snc7/305819_10150369820292147_27888702146_8255527_583491475_s.jpg",
"link": "https://www.facebook.com/photo.php?fbid=10150369820292147&set=a.386279807146.165840.27888702146&type=1",
"icon": "http://static.ak.fbcdn.net/rsrc.php/v1/yz/r/StEh3RhPvjk.gif",
"type": "photo",
"object_id": "10150369820292147",
"created_time": "2011-10-16T08:22:21+0000",
"updated_time": "2011-10-16T08:22:21+0000",
"likes": {
"data": [
{
"name": "brocoli",
"category": "Record label",
"id": "27888702146"
},
{
"name": "Agathe Morier",
"id": "601668526"
}
],
"count": 2
},
"comments": {
"count": 0
},
"is_published": true
}
Проблема в том, что ссылка на изображение является копией изображения в низком разрешении.
Как я могу получить URL полной картинки?
Спасибо!!
Лучший
Жоффруа
5 ответов
Вы можете получить другую версию photo
путем запроса Graph API с его object_id
(не фото post_id
который id
в результатах вы предоставили).
Как только вы запросите photo
по объекту id
вы получите массив images
с URL и размерами:
http://graph.facebook.com/10150369820292147?fields=images
Все, что вам нужно сделать, это:
http://graph.facebook.com/me?fields=picture.height(961)
// replace 961 with your required height which u want
Вы можете сделать это из основного списка сообщений сейчас, используя
/v2.3/105753476132681/posts?limit=5&fields=likes.summary(true),comments.summary(true), attachments
Если вложения не работают, попробуйте full_picture - но это также дало мне изображение 100x100.
Attachments возвращает хэш данных как минимум с версией изображения 640x480 (не уверен, какой у меня был размер моего оригинального фото)
Хоть запрашиваю фото своим object_id
вернет массив изображений с разными размерами, в некоторых случаях этот подход потребует дополнительного вызова API Facebook.
Более простой подход - добавить full_picture
в ваш список параметров, которые будут извлекать изображения с самым высоким разрешением, связанные с постом.
/v2.2/6275848869/posts?fields=full_picture
Например, если вы хотите извлечь все сообщения со страницы Facebook за последние X дней, с помощью object_id
подход, вам нужно будет вызвать API 3 раза:
- Чтобы получить информацию о странице.
- Извлечь список постов и получить
object_id
за каждый пост. - Для каждого
object_id
, чтобы получить список изображений с более высоким разрешением.
Используйте этот код. Его работа для меня и получить четкое изображение
String PICTURE_URL;
String getPicture = hashMap.get("picture");
if (getPicture.contains("_t.")) {
PICTURE_URL = getPicture.replaceAll("_t.", "_n.");
} else if (getPicture.contains("_a.")) {
PICTURE_URL = getPicture.replaceAll("_a.", "_n.");
} else if (getPicture.contains("_s.")) {
PICTURE_URL = getPicture.replaceAll("_s.", "_n.");
} else if (getPicture.contains("_q.")) {
PICTURE_URL = getPicture.replaceAll("_q.", "_n.");
}
url=new URL(PICTURE_URL);
Bitmap bitmap=BitmapFactory.decodeStream(url.openConnection().getInputStream());
((ImageView)view.findViewById(R.id.imageView_FullImage)).setImageBitmap(bitmap);