получать фотографии с высоким разрешением, которые были размещены на странице стены / канал - PullRequest
11 голосов
/ 22 марта 2012

Я получаю стену своей страницы с открытым графиком. И когда кто-то опубликовал фото, я получаю его на 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 ]

18 голосов
/ 22 марта 2012

Вы можете получить другую версию photo, запросив Graph API с его object_id (не фотография post_id, что составляет id в предоставленных вами результатах).

Как только вы запросите photo по объекту id, вы получите массив images с URL-адресами и размерами:

http://graph.facebook.com/10150369820292147?fields=images
5 голосов
/ 26 октября 2015

Все, что вам нужно сделать, это:

http://graph.facebook.com/me?fields=picture.height(961) 
// replace 961 with your required height which u want
4 голосов
/ 27 марта 2015

Теперь вы можете сделать это из основного списка сообщений, используя

/v2.3/105753476132681/posts?limit=5&fields=likes.summary(true),comments.summary(true), attachments

Если вложения не работают, попробуйте full_picture - но это также дало мне изображение 100x100.

Attachments возвращает хэш данных как минимум с версией изображения размером 640x480 (не уверен, какой у меня был размер моего оригинала фотографии)

3 голосов
/ 01 ноября 2016

Хотя запрос фотографии по ее object_id вернет массив изображений с разными размерами, в некоторых случаях этот подход потребует дополнительного вызова API Facebook.

Более простой подход - добавить full_picture в ваш список параметров, который будет извлекать изображение с самым высоким разрешением, связанное с постом.

/v2.2/6275848869/posts?fields=full_picture

Например, если вы хотите извлечь все сообщения со страницы Facebook за последние X дней, при использовании подхода object_id вам нужно будет вызывать API 3 раза:

  1. Чтобы получить информацию о странице.
  2. Чтобы извлечь список сообщений и получить object_id для каждого сообщения.
  3. Для каждого object_id, чтобы получить списокизображений более высокого разрешения.
2 голосов
/ 01 апреля 2013

Используйте этот код.Его работа для меня и получить четкое изображение

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