Параметр размера изображения по умолчанию для API Facebook [дубликат]

Что такое типы raw в Java и почему я часто слышу, что они не должны использоваться в новом коде?

blockquote>

Необработанные типы - это древняя история Java язык. В начале были Collections, и они больше не держали Objects и ничего меньше. Каждая операция на Collections требовала отличных от Object желаемого типа.

List aList = new ArrayList();
String s = "Hello World!";
aList.add(s);
String c = (String)aList.get(0);

Хотя это продолжалось большую часть времени, произошли ошибки

List aNumberList = new ArrayList();
String one = "1";//Number one
aNumberList.add(one);
Integer iOne = (Integer)aNumberList.get(0);//Insert ClassCastException here

Старый нетривиальные коллекции не могли обеспечить безопасность типов, поэтому программисту приходилось запоминать то, что он хранил в коллекции. Генераторы, изобретенные, чтобы обойти это ограничение, разработчик объявит сохраненный тип один раз, и компилятор сделает это вместо этого.

List aNumberList = new ArrayList();
aNumberList.add("one");
Integer iOne = aNumberList.get(0);//Compile time error
String sOne = aNumberList.get(0);//works fine

Для сравнения:

// Old style collections now known as raw types
List aList = new ArrayList(); //Could contain anything
// New style collections with Generics
List aList = new ArrayList(); //Contains only Strings

Более сложный Интерфейс Compareable:

//raw, not type save can compare with Other classes
class MyCompareAble implements CompareAble
{
   int id;
   public int compareTo(Object other)
   {return this.id - ((MyCompareAble)other).id;}
}
//Generic
class MyCompareAble implements CompareAble
{
   int id;
   public int compareTo(MyCompareAble other)
   {return this.id - other.id;}
}

Обратите внимание, что невозможно реализовать интерфейс CompareAble с compareTo(MyCompareAble) с необработанными типами. Почему вы не должны их использовать:

  • Любое Object, хранящееся в Collection, должно быть выполнено до его использования
  • Использование обобщений позволяет проверять время компиляции
  • Использование исходных типов - это то же самое, что и сохранение каждого значения как Object

Что делает компилятор: Дженерики обратно совместимы, они используют одни и те же классы java, типы делают.

List someStrings = new ArrayList();
someStrings.add("one");
String one = someStrings.get(0);

Будет скомпилирован как:

List someStrings = new ArrayList();
someStrings.add("one"); 
String one = (String)someStrings.get(0);

Это тот же код, который вы бы написали, если вы использовали исходные типы напрямую. Думаю, я не уверен, что происходит с интерфейсом CompareAble, я предполагаю, что он создает две функции compareTo, одна из которых принимает MyCompareAble, а другая принимает Object и передает ее первой после ее литья.

Каковы альтернативы сырым типам: используйте generics

75
задан Kara 20 February 2014 в 02:49
поделиться

17 ответов

вам не нужно вытягивать атрибут «картинка». есть намного более удобный способ, единственное, что вам нужно - это userid, см. пример ниже;

https://graph.facebook.com/user_id/picture?type=large

стр. s. тип определяет размер, который вы хотите

plz, помните, что используя токен с базовыми разрешениями, / me / friends вернут список друзей только с атрибутами id + name

58
ответ дан guleryuz 20 August 2018 в 16:34
поделиться
  • 1
    Но я не согласен с вами в последнем предложении: с базовым разрешением вы можете получить доступ к более чем атрибуту id + name, например: graph.facebook.com/btaylor – Martin 18 May 2012 в 13:22
  • 2
    uhm, как насчет «в одном запросе»? – Iulian Onofrei 24 April 2014 в 11:06
  • 3
    ребята, ссылка не работает правильно, вы можете помочь с той же проблемой – Saugat Thapa 22 July 2016 в 07:28
  • 4
    U также может использовать full_picture instat изображения. – Bo Pennings 28 November 2016 в 12:32
  • 5
    Передано вниз, потому что этот ответ не решает "в одном запросе" требование. – Vitalii Zurian 19 December 2017 в 17:13

У меня такая же проблема, но я попытался решить эту проблему. он возвращает большое изображение. Это не идеальное решение, но вы можете попробовать это.

https://graph.facebook.com/v2.0/OBJECT_ID/picture?access_token=XXXXX

0
ответ дан Ajay 20 August 2018 в 16:34
поделиться
  • 1
    Просто добавьте еще один параметр в запрос: type = large. Пожалуйста, проверьте мой ответ ниже. – born to hula 20 December 2014 в 01:03

Вы можете указать ширину и; высота в вашем запросе к графику Facebook api: http://graph.facebook.com/user_id/picture?width=500&heigth=500

0
ответ дан Alexey Kislitsin 20 August 2018 в 16:34
поделиться

Вариант в стиле JS. Просто установите огромную ширину изображения, и вы получите самый большой вариант.

FB.api(
  '/' + userId,
  {fields: 'picture.width(2048)'},
  function (response) {
    if (response && !response.error) {
      console.log(response.picture.data.url);
    }
  }
);
0
ответ дан Dzmitry Vasilevsky 20 August 2018 в 16:34
поделиться

попытайтесь изменить размер изображения, изменив размер пикселя с url в каждом объекте json следующим образом:

например, я изменяю s480x480 как s720x720

До: https://fbcdn-sphotos-ca.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s480x480/10454308_773207849398282_283493808478577207_n.jpg

После: https://fbcdn-sphotos-ca.akamaihd.net/hphotos-ak-xfp1/t1.0-9/q71/s720x720/10454308_773207849398282_283493808478577207_n.jpg

0
ответ дан E_X 20 August 2018 в 16:34
поделиться

Я исследовал Graph API Explorer широко и, наконец, нашел full_picture

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture

P.S. Я заметил, что full_picture не всегда будет предоставлять полноразмерный образ, который я хочу. [attachments] делает

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments
20
ответ дан Jonghee Park 20 August 2018 в 16:34
поделиться
  • 1
    это только ширина отображения: 720px. u r только крупная фотография нахожу это. для большого graph.facebook.com/photo_id u можно увидеть фотографию 6 разных размеров. – gokhan 3 February 2015 в 17:32
  • 2
    я просто проверил это с конечной точкой друзей, и он не работал – luschn 27 March 2015 в 08:54
  • 3
    Удивительно, спасибо человеку – Mauricio Chirino 28 July 2017 в 03:02
  • 4
    Сохраненный мой день ... не понимаю, почему API facebook является неудобным – xetra11 15 December 2017 в 11:20

Измените массив полей id,name,picture на id,name,picture.type(large)

https://graph.facebook.com/v2.8/me?fields=id,name,picture.type(large)&access_token=<the_token>

Результат:

{
   "id": "130716224073524",
   "name": "Julian Mann",
   "picture": {
      "data": {
         "is_silhouette": false,
         "url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/15032818_133926070419206_3681208703790460208_n.jpg?oh=a288898d87420cdc7ed8db5602bbb520&oe=58CB5D16"
      }
   }
}
29
ответ дан Julian Mann 20 August 2018 в 16:34
поделиться
  • 1
    Как 200 х 200 больших? – AlxVallejo 24 May 2017 в 21:14
  • 2
    В последнем (2.10) Graph API не «большой». имеющийся размер: Graph returned an error: (#100) For field 'picture': type must be one of the following values: thumbnail, small, album – Honza 14 October 2017 в 21:33
  • 3
    OMFG! Loooooooooooool ... Просто нашел проблему с одним из моих приложений ... thumbnail, small, album, я сделал все, чтобы получить альбом, и использовал большой. И изменилось большое для альбома, lol ... это должно перегружать ресурсы ... – David Augustus 1 December 2017 в 02:59

Вы можете использовать full_picture вместо клавиши изображения, чтобы получить изображение полного размера.

0
ответ дан Khalil ur Rehman 20 August 2018 в 16:34
поделиться

Лучший способ получить всех друзей (которые тоже используют приложение тоже, конечно) с правильными размерами изображений - использовать расширение field , либо с одним из тегов размера (квадратный, нормальный, большой):

/me/friends?fields=picture.type(large)

(изменить: это больше не работает)

... или вы можете указать ширину / высоту:

me/friends?fields=picture.width(100).height(100)

Btw, вы также можете записать его так:

me?fields=friends{picture.type(large)}
66
ответ дан luschn 20 August 2018 в 16:34
поделиться
  • 1
    Больше не работает, но full_picture, вложения теперь дают правильные поля ... – Kevin 27 March 2015 в 03:43
  • 2
    спасибо за информацию, я обновлю ответ. full_picture, похоже, не работает для друзей, хотя: / me / friends? fields = full_picture - вы знаете, как это возможно? – luschn 27 March 2015 в 08:50

Хм ... Я думаю, что нашел решение.

На самом деле, in может просто запросить

https://graph.facebook.com/me/friends?fields=id,name

Согласно http: // разработчикам .facebook.com / docs / reference / api / (раздел «Картинки»), URL-адрес фотографий профиля может быть создан с идентификатором пользователя

Например, если идентификатор пользователя находится в $ id :

"http://graph.facebook.com/$id/picture?type=square"
"http://graph.facebook.com/$id/picture?type=small"
"http://graph.facebook.com/$id/picture?type=normal"
"http://graph.facebook.com/$id/picture?type=large"

Но это не окончательный URL-адрес изображения, поэтому, если у кого-то есть лучшее решение, я был бы рад узнать:)

9
ответ дан Martin 20 August 2018 в 16:34
поделиться

Из v2.7, /<picture-id>?fields=images предоставит вам список с разным размером изображений, первый элемент будет полноразмерным изображением.

Я не знаю ни одного решения для нескольких изображений сразу.

2
ответ дан maxbellec 20 August 2018 в 16:34
поделиться

Я думаю, что теперь единственный способ получить большие фотографии друзей - использовать FQL. Во-первых, вам нужно получить список друзей:

https://graph.facebook.com/me/friends

Затем проанализируйте этот список и Извлеките всех друзей ids. Если у вас есть это, просто выполните следующий запрос FQL:

SELECT id, url FROM profile_pic WHERE id IN (id1, id2) AND width=200 AND height=200

200 здесь просто примерный размер, вы можете ввести что угодно. Вы должны получить следующий ответ:

{
  "data": [
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }, 
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }
  ]
}

. Каждый URL-адрес является ссылкой на образ 200x200px.

0
ответ дан Paweł Gościcki 20 August 2018 в 16:34
поделиться

Вы можете установить размер изображения в пикселях, например:

https://graph.facebook.com/v2.8/me?fields=id,name,picture.width(500).height(500)

Аналогичным образом можно использовать параметр type

{user-id}/?fields=name,picture.type(large)

From документация

type enum {small, normal, album, large, square}

15
ответ дан Ratul Sharker 20 August 2018 в 16:34
поделиться

В URL-адресах изображений, найденных в ответах Graph (« http://photos-c.ak.fbcdn.net/ », просто замените по умолчанию «_s.jpg» на « _n.jpg "(? нормальный размер) или" _b.jpg "(? большой размер) или" _t.jpg "(thumbnail).

Hacakable URLs / REST API улучшают работу в Интернете.

1
ответ дан Ronan 20 August 2018 в 16:34
поделиться
  • 1
    Кажется, всегда дает «Ошибка при обработке вашего запроса. Ссылка # 50.27f74317.14274.604fb0 " теперь, к сожалению – Kevin 27 March 2015 в 03:40
  • 2
    Лол. 11 декабря, woooow ... – David Augustus 1 December 2017 в 02:54

Пользователи rest-fb (квадратное изображение, большее разрешение): Connection myFriends = fbClient.fetchConnection ("me / friends", User.class, Parameter.with ("поля", "public_profile, email, first_name, last_name, пола, picture.width (100) .height (100) "));

1
ответ дан sigi 20 August 2018 в 16:34
поделиться

Вы также можете попробовать получить изображение, если хотите, исходя из высоты или ширины

https://graph.facebook.com/user_id/picture?height=

ИЛИ

https://graph.facebook.com/user_id/picture?width=

Значения по умолчанию в пикселях вам просто нужно указать значение int

18
ответ дан Swaprks 20 August 2018 в 16:34
поделиться

Как описано в этой ошибке на Facebook, вы также можете запросить конкретные размеры изображений теперь с помощью нового синтаксиса API [ field ].

Например:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)
173
ответ дан thaddeusmt 20 August 2018 в 16:34
поделиться
  • 1
    В самом деле. fields = picture.width (640) еще лучше. – kaay 30 April 2014 в 13:23
  • 2
    Кажется, API-интерфейс Facebook изменил свой api. Facebook ответили «Подполе не поддерживаются картиной». когда я попытался использовать ваше предложение. – Phat H. VU 25 July 2014 в 05:38
  • 3
    получение ошибки: {& quot; ошибка & quot ;: {& quot; сообщение & quot ;: & quot; Неподдерживаемый запрос на получение. Пожалуйста, прочитайте документацию API Графа в developers.facebook.com/docs/graph-api" ;, & quot; type & quot ;: & quot; GraphMethodException & quot ;, & quot; code & quot; 100}} – Vineesh TP 13 October 2014 в 11:41
  • 4
    См. Поле? Field = full_picture, вложения для запросов 2.x – Kevin 27 March 2015 в 03:44
  • 5
    Большое спасибо, вы только что спасли пони – sachadso 4 November 2015 в 18:18
Другие вопросы по тегам:

Похожие вопросы: