#facebook #facebook-graph-api
#Facebook #facebook-graph-api
Вопрос:
Используя Graph API, я могу получать маленькие, большие и средние картинки. Или я могу получить маленькую квадратную картинку.
Но как я могу получить большую квадратную картинку? Есть ли какой-либо сервис, которым я могу воспользоваться?
Ответ №1:
Просто, я только что узнал об этом.
Пример,
https://graph.facebook.com/friends_Id/picture ?ширина = 200 и высота = 200
tada~
Комментарии:
1. Приятно, но URL на самом деле дает непредсказуемый размер результата для разных пользователей. Когда он устанавливает 128 и 128 — он отображается одинакового размера для каждого пользователя профиля
2. В соответствующих документах Facebook API говорится, что это вернет «квадратное изображение, если ширина и высота имеют одинаковое значение». Однако при моем собственном тестировании фотографии из альбома возвращенные ширина и высота были больше 200, и результат также не был квадратным. Я попытался исправить ошибку на этой странице документа , но получил сообщение об ошибке: «В настоящее время мы принимаем ошибки только на английском языке» … хотя мой отчет был на английском.
3. Для большинства пользователей вы получите квадратную картинку, но для некоторых пользователей вы можете получить неквадратную картинку запрошенной вами ширины, но другой высоты. И действительно, если вы внимательно посмотрите, документация не гарантирует, что вы получите квадратное изображение.
Ответ №2:
Как ни странно, Facebook сам по себе не использует увеличенное квадратное изображение, хотя на новых изображениях timeline они отображают изображение профиля большего размера в квадрате. Если присмотреться, они берут прямоугольное изображение большего размера и перемещают его внутри HTML-элемента, как предложил Майкл выше.
Я ожидал бы, что в какой-то момент данные о местоположении, которые они используют для этого, будут выпущены через API, но я не знаю, что эти данные пока доступны. У меня были случаи, когда это тоже было бы полезно, и до сих пор я либо просто центрировал изображение, либо использовал верхнюю часть. Однако это не идеально, поскольку FB уже позволяет и отслеживает пользовательское позиционирование наиболее важного «квадрата» изображения с помощью их создателя «значков».
Ответ №3:
Официально это сделать невозможно, вот глупый взлом. Следующий код гарантирует, что изображение не будет шире / выше 120 пикселей. Если это так, то изображение будет выходить за пределы элемента:
<div style="width: 120px; height: 120px; overflow: hidden; display: inline-block;">
<img src="{$image}" align="absmiddle" width=120 style="min-width: 120px; min-height: 120px;" />
</div>
Комментарии:
1. Это решение не поддерживает исходное соотношение сторон изображения.
Ответ №4:
Вы можете указать желаемый размер картинки с помощью аргумента type, который должен быть квадратным (50×50), маленьким (шириной 50 пикселей, переменной высотой) и большим (шириной около 200 пикселей, переменной высотой).
Из ссылки на Graph API. Это единственные доступные три размера. Вы можете использовать увеличенную версию изображения размером 50×50, но это, очевидно, будет выглядеть искаженным.
Комментарии:
1. Спасибо, Джимми. Но что, если мне нужно, например, изображение профиля 180px / 180px?
2. Как я уже сказал, это ваши варианты. Единственный способ сделать его размером 180×180 — это либо обрезать большое изображение самостоятельно, либо увеличить изображение 50×50 с помощью прямого атрибута HTML.
3. 1, @Sergey короткая история… Facebook не будет делать вашу домашнюю работу! 🙂
Ответ №5:
В настоящее время Graph фактически может возвращать вам квадратное изображение любого размера. Они кэшируют наиболее распространенные размеры (например, 100×100, 128×128) и возвращают ближайший размер по следующему запросу (наведите курсор, чтобы увидеть)
Ответ №6:
Как уже указывалось в других ответах, в facebook квадратные картинки представлены только в 50x50
разрешении.
Простой взлом CSS делает свое дело, хотя:
Запросите большое изображение, оберните img
-тег div
символом и примените этот CSS к div:
img#facebook_img {
width: YOUR_WIDTH;
}
div#wrapper {
height: YOUR_HEIGHT;
overflow: hidden;
}
Если YOUR_WIDTH
и YOUR_HEIGHT
совпадают, вы получаете квадратное изображение, и соотношение сохраняется.
Ответ №7:
Ни один из ответов не сработал идеально для меня, поскольку я наткнулся на изображения профиля различных размеров (некоторые с большей высотой, чем ожидалось, некоторые с меньшей высотой), которые в итоге оказались либо растянутыми, либо нецентрированными.
В итоге я использовал div
элемент вместо img
и установил изображение через background-image
style
атрибут, а не через его src
атрибут.
Файл CSS:
.profile-pic {
background-repeat: no-repeat;
background-position: center;
background-size: cover;
height: 120px;
width: 120px;
border: solid 1px #ddd;
}
HTML:
<div style="background-image:url(https://graph.facebook.com/123/picture?width=120amp;height=120);" class="profile-pic"></div>
Замените 120 пикселей в приведенном выше (встречается дважды в CSS и дважды во фрагменте HTML) на желаемые размеры.
Комментарии:
1. Примечание: На данный момент Facebook при запросе изображения размером 100×100 пикселей всегда выдает квадратное изображение. Однако запросите то же изображение другого размера, например 120x120px, и вы можете получить неквадратичное изображение шириной 120 пикселей, но другой высоты.