Как разместить анимированные GIF-изображения на Facebook?

22

Друг разместил изображение, которое анимировалось прямо в фиде сообщений на моей стартовой странице в Facebook. Как это возможно? Как это может быть сделано?

Это URL, используемый Facebook: http://photos-c.ak.fbcdn.net/hphotos-ak-snc3/29301_442976909814_310716489814_5773694_3162803_s.jpg

Это изображение GIF только что переименовано .jpg? Возможно нет.

Я не знаю, помогает ли это или что-то еще, но вот часть (сценарий), которая содержит URL этого изображения:

<script>big_pipe.onPageletArrive({"phase":4,"id":"pagelet_photo_bar","css":["aes1F","FPnMi"],"js":["Py8xV","1k++i","9qrJd"],"onload":["PhotoTheater.init(HTML(\"\\u003cdiv id=\\\"fbPhotoTheater\\\" class=\\\"fbPhotoTheater hidden_elem narrowerWhiteBar\\\" tabindex=\\\"0\\\" role=\\\"region\\\" aria-label=\\\"Facebook-Diashow\\\" aria-busy=\\\"true\\\">\\u003cdiv class=\\\"container\\\">\\u003cdiv class=\\\"positioner\\\">\\u003ca class=\\\"uiTooltip closeTheater\\\" href=\\\"#\\\">\\u003ci class=\\\"closeImage img sp_6lzo0r sx_bbf9a4\\\">\\u003c\\\/i>\\u003cspan class=\\\"uiTooltipWrap middle left leftmiddle\\\">\\u003cspan class=\\\"uiTooltipText uiTooltipNoWrap\\\">Schlie\\u00dfen\\u003c\\\/span>\\u003c\\\/span>\\u003c\\\/a>\\u003c\\\/div>\\u003cdiv class=\\\"stageBackdrop\\\">\\u003c\\\/div>\\u003cdiv class=\\\"stageWrapper\\\">\\u003cdiv class=\\\"stage\\\">\\u003cimg src=\\\"\\\/images\\\/loaders\\\/indicator_black.gif\\\" class=\\\"spotlight\\\" \\\/> \\u003cdiv class=\\\"fbPhotosTheaterTags tagContainer\\\" id=\\\"fbPhotoTheaterTags\\\">\\u003cdiv class=\\\"tagsWrapper\\\">\\u003c\\\/div>\\u003c\\\/div>\\u003c\\\/div>\\u003cdiv class=\\\"videoStage\\\"> \\u003c\\\/div>\\u003cdiv id=\\\"fbPhotoTheaterError\\\" class=\\\"fbPhotoTheaterError hidden_elem stageError\\\">\\u003c\\\/div>\\u003c\\\/div>\\u003cdiv class=\\\"stageActions\\\" id=\\\"fbPhotoTheaterStageActions\\\">\\u003ca class=\\\"prev\\\" href=\\\"#\\\" title=\\\"Zur\\u00fcck\\\">\\u003c\\\/a>\\u003ca class=\\\"next\\\" href=\\\"#\\\" title=\\\"Weiter\\\">\\u003c\\\/a>\\u003cdiv class=\\\"fbPhotoTheaterButtons\\\" id=\\\"fbPhotoTheaterButtons\\\">\\u003c\\\/div>\\u003c\\\/div>\\u003cdiv class=\\\"photoInfoWrapper\\\">\\u003ctable class=\\\"uiGrid fbPhotoTheaterGrid photoInfo\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\\u003ctbody>\\u003ctr>\\u003ctd class=\\\"vTop detailsCell\\\">\\u003cdiv class=\\\"detailsContainer\\\">\\u003cdiv id=\\\"fbPhotoTheaterTitle\\\">\\u003c\\\/div>\\u003cspan id=\\\"fbPhotoTheaterContributors\\\">\\u003c\\\/span> \\u003cspan class=\\\"fsm fwn fcg\\\" id=\\\"fbPhotoTheaterCount\\\">\\u003c\\\/span>\\u003chr class=\\\"mvm\\\" \\\/>\\u003cdiv id=\\\"fbPhotosTheaterActions\\\" class=\\\"fbPhotosTheaterActions\\\">\\u003c\\\/div>\\u003c\\\/div>\\u003c\\\/td>\\u003ctd class=\\\"vTop commentsCell\\\">\\u003cdiv class=\\\"commentsContainer\\\">\\u003cdiv class=\\\"fbPhotosTaglist mbm tagpile\\\" id=\\\"fbPhotosTaglist\\\">\\u003cspan class=\\\"caption fsm fwn fcg\\\">Auf diesem Foto: \\u003c\\\/span>\\u003c\\\/div>\\u003cdiv id=\\\"fbPhotoTheaterUfi\\\">\\u003cform rel=\\\"async\\\" class=\\\"commentable_item autoexpand_mode\\\" method=\\\"post\\\" action=\\\"\\\/ajax\\\/ufi\\\/modify.php\\\" onsubmit=\\\"return Event.__inlineSubmit(this,event)\\\">\\u003cinput type=\\\"hidden\\\" name=\\\"charset_test\\\" value=\\\"&euro;,&acute;,\\u20ac,\\u00b4,\\u6c34,\\u0414,\\u0404\\\" \\\/>\\u003cinput type=\\\"hidden\\\" autocomplete=\\\"off\\\" name=\\\"post_form_id\\\" value=\\\"10711e587b061f39240641dbc74019ac\\\" \\\/>\\u003cinput type=\\\"hidden\\\" name=\\\"fb_dtsg\\\" value=\\\"AQBfQgRs\\\" autocomplete=\\\"off\\\" \\\/>\\u003c\\\/form>\\u003c\\\/div>\\u003c\\\/div>\\u003c\\\/td>\\u003ctd class=\\\"vTop adsCell\\\">\\u003cdiv class=\\\"adsContainer\\\">\\u003cdiv class=\\\"clearfix\\\">\\u003cdiv id=\\\"fbPhotoTheaterEgo\\\" class=\\\"fbPhotoTheaterEgo\\\">\\u003c\\\/div>\\u003cdiv class=\\\"fbPhotoTheaterEgoSponsored fss fwn fcg\\\">Gesponsert\\u003c\\\/div>\\u003c\\\/div>\\u003c\\\/div>\\u003c\\\/td>\\u003c\\\/tr>\\u003c\\\/tbody>\\u003c\\\/table>\\u003c\\\/div>\\u003c\\\/div>\\u003c\\\/div>\"));"],"onafterload":["Bootloader.loadComponents([\"fb-photos-theater-css\"], function(){  });"],"content":{"pagelet_photo_bar":"\u003cdiv class=\"mbm fbProfilePhotoStrip\">\u003cul class=\"fbProfilePhotoBar\">\u003cli class=\"stat_elem\" id=\"thumb193067094054363\">\u003ca class=\"uiMediaThumb fbProfilePhotoThumb uiMediaThumbMedium\" href=\"http:\/\/www.facebook.com\/photo.php?fbid=193067094054363&amp;set=t.100000400858474&amp;type=1\" rel=\"theater\" ajaxify=\"http:\/\/www.facebook.com\/photo.php?fbid=193067094054363&amp;set=t.100000400858474&amp;type=1&amp;src=http\u00253A\u00252F\u00252Fa1.sphotos.ak.fbcdn.net\u00252Fhphotos-ak-snc6\u00252F179200_193067094054363_100000532222327_655777_5428850_n.jpg&amp;theater\">\u003ci style=\"background-image: url(http:\/\/photos-a.ak.fbcdn.net\/hphotos-ak-snc6\/179200_193067094054363_100000532222327_655777_5428850_s.jpg); background-position: -33px -17px;\">\u003c\/i>\u003c\/a>\u003c\/li>\u003cli class=\"stat_elem\" id=\"thumb185312914825402\">\u003ca class=\"uiMediaThumb fbProfilePhotoThumb uiMediaThumbMedium\" href=\"http:\/\/www.facebook.com\/photo.php?fbid=185312914825402&amp;set=t.100000400858474&amp;type=1\" rel=\"theater\" ajaxify=\"http:\/\/www.facebook.com\/photo.php?fbid=185312914825402&amp;set=t.100000400858474&amp;type=1&amp;src=http\u00253A\u00252F\u00252Fa8.sphotos.ak.fbcdn.net\u00252Fhphotos-ak-snc6\u00252F165369_185312914825402_100000400858474_523262_6205304_n.jpg&amp;theater\">\u003ci style=\"background-image: url(http:\/\/photos-h.ak.fbcdn.net\/hphotos-ak-snc6\/165369_185312914825402_100000400858474_523262_6205304_s.jpg); background-position: -22px -30px;\">\u003c\/i>\u003c\/a>\u003c\/li>\u003cli class=\"stat_elem\" id=\"thumb175015452521815\">\u003ca class=\"uiMediaThumb fbProfilePhotoThumb uiMediaThumbMedium\" href=\"http:\/\/www.facebook.com\/photo.php?fbid=175015452521815&amp;set=a.175015445855149.34462.100000400858474&amp;type=1\" rel=\"theater\" ajaxify=\"http:\/\/www.facebook.com\/photo.php?fbid=175015452521815&amp;set=a.175015445855149.34462.100000400858474&amp;type=1&amp;src=http\u00253A\u00252F\u00252Fa6.sphotos.ak.fbcdn.net\u00252Fhphotos-ak-snc4\u00252F156854_175015452521815_100000400858474_459703_1557976_n.jpg&amp;theater\">\u003ci style=\"background-image: url(http:\/\/photos-f.ak.fbcdn.net\/hphotos-ak-snc4\/156854_175015452521815_100000400858474_459703_1557976_s.jpg);\">\u003c\/i>\u003c\/a>\u003c\/li>\u003cli class=\"stat_elem\">\u003cdiv class=\"fbProfilePhotoThumbEmpty\">\u003c\/div>\u003c\/li>\u003cli class=\"stat_elem\">\u003cdiv class=\"fbProfilePhotoThumbEmpty\">\u003c\/div>\u003c\/li>\u003c\/ul>\u003c\/div>"}});</script> 

Важная часть вышеупомянутого, кажется, здесь:

style=\"background-image: url(http:\/\/photos-f.ak.fbcdn.net\/hphotos-ak-snc4\/156854_175015452521815_100000400858474_459703_1557976_s.jpg);\">
bitbonk
источник
Вы не можете просто переименовать GIF в JPG и ожидать, что это сработает.
ChrisF
Да, я только что попробовал это. GIF по-прежнему отображается правильно на Facebook, но не анимируется.
bitbonk

Ответы:

15

Май 2015

http://mashable.com/2015/05/29/facebook-gif-support/

Прежде всего следует помнить, что эта функция работает с GIF-ссылками, а не с GIF-загрузками. По крайней мере, на данный момент, попытка загрузить ваш любимый GIF не приведет к пригодному для воспроизведения GIF на Facebook.

[...]

Такие сервисы, как Giphy, Imgur, GFYcat и другие, пытаются упростить встраивание больших GIF-файлов по всей сети.

[...]

убедитесь, что вы используете полный URL-адрес GIF от Giphy или других сервисов GIF.

Апрель 2012 - Current Exploit использует мобильное текстовое приложение для передачи изображений

http://www.facebook.com/connect/uiserver.php?app_id=2915120374
&method=stream_publish
&redirect_uri=http://www.facebook.com
&from=SENDERID
&target_id=RECEIVERID
&action_links=[{"text":"Your Text Here",
                "href":"http://www.blank.com/"}]
&attachment={'media':[{'type':'image',
                       'src':'animationurl',
                       'href':'anyurl'}],
             'description':'LongDescription',
             'properties':{'Anything':{'text':'Anything',
                                       'href':'anyurl'}}}

Единственное, что действительно нужно, это изображение animationurl, которое должно быть размещено на Facebook.

Это способы, которые ранее были возможны

  • Изменение имени файла на GIF
  • Изменение размеров файла примерно до 120 пикселей, чтобы обойти сжатие
  • Изменение данных заголовка или добавление байтов (например, 3B в данных GIF) в конец файла, чтобы обойти инструменты изображения Facebook
    Изменение данных
  • Через Facebook FBML
  • Через Facebook HMTL теги в заметках

Похоже, что первый способ работы - это поделиться имеющимся набором картинок на серверах Facebook, пометив на нем пользователей. Я не видел никаких новых GIF-файлов, кроме тех, которые в настоящее время вращаются вокруг.

Второй использует злоупотребление API Facebook через приложение Facebook. Разработчик скрыл GIF-файлы в предварительном просмотре видео.

Приложение для разработчиков

Теперь, предполагая, что кто-то должен это выяснить, вы будете забанены ... потому что это означает, что система загрузки изображений имеет недостатки, и опасный код может быть выполнен, будучи скрытым в GIF или изображении. Похоже, что Facebook Photo Team позаботится о том, чтобы GIF больше не оставались.

Натаниэль Роман

Изображение Quora: Это была ошибка, которая была на сайте в течение короткого периода времени.  Это было исправлено некоторое время назад.

И ранее в старой Facebook Dev Wiki кое-что из этого могло измениться, но суть остается прежней

Платформа Facebook обрабатывает теги img особым образом. При публикации страницы серверы Facebook запрашивают любые URL-адреса изображений, а затем подают эти изображения, переписывая атрибут src всех тегов img, используя домен * .facebook.com. Это защищает конфиденциальность пользователей Facebook и позволяет им лучше контролировать качество обслуживания своих изображений.

Существует несколько причин существования кэша изображений:

  • Нам нужен способ обеспечить некоторую степень качества и однородности изображений, отображаемых в профилях пользователей (без анимированных изображений, изображений размером 50 МБ и т. Д.)
  • Нам нужно защищать конфиденциальность пользователей и не позволять вредоносным программам извлекать информацию из запросов изображений, сделанных непосредственно из браузера просматривающего пользователя.
  • Вероятно, самое важное для вас, кэш изображений защищает разработчиков от потенциально огромной нагрузки на обслуживание этих изображений, вместо этого бремя нагрузки на ресурсы Facebook

И в конце, как я уже упоминал в другом месте

Кроме того, хотя нигде не указано в TOS,

Загружая файл, вы подтверждаете, что имеете право распространять эту фотографию и не нарушать ее Условия использования.

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

PS Не думайте, потому что, когда вы просматриваете сайты, сотрудники Facebook не видят эту информацию. В тот момент, когда эксплойт известен публично, в то же время он будет закрыт

phwd
источник
6

Хотя расширение jpeg, это все-таки GIF-файл

Изображение Firefox

Чтобы ответить на ваш вопрос, вот что я нашел :

Что вам нужно сделать, это загрузить небольшой анимированный GIF-файл (около 50 КБ или меньше) в качестве фотографии профиля (Facebook сгладит анимированные GIF-изображения большого размера, но не обнаружит меньшие). Затем он будет в альбоме вашего профиля. Сама ваша иконка НЕ ​​будет анимирована. Тем не менее, вы увидите его как анимированный в папке с фотографиями вашего профиля в Facebook, и, перейдя к этой фотографии и нажав «поделиться», он появится на вашей стене как анимированный.

Миниатюры профиля всегда генерируются из базового изображения. Если базовое изображение меньше 120x120, анимация останется неизменной как в свернутом, так и в развернутом виде. Все, что превышает этот размер, необходимо изменить, чтобы оно соответствовало минимизированному миниатюру галереи, и оно потеряет анимацию, однако полноразмерный должен оставаться анимированным.

Сатьяджит Бхат
источник
1

Я исследовал и обнаружил, что изображение генерируется приложением http://apps.facebook.com/animated-picture/. Вы можете создавать подобные файлы из SWF-файла (flash) в этом приложении в виде анимированного GIF-файла и публиковать его на своем Facebook!

Фабио Колелла
источник
К сожалению, приложение больше не доступно. Facebook должен включить возможность использовать картинки.
Скан
0

Facebook теперь поддерживает загрузку анимированных GIF-файлов. Если вы нажмете кнопку загрузки изображения в поле обновления статуса на странице новостей или на временной шкале, затем выберите анимированный GIF-файл, который вы хотите загрузить, он будет загружен, и Facebook преобразует его в видеофайл .mp4, который можно воспроизвести. как обычный видеофайл Facebook, включая возможность приостановки в определенных кадрах, что невозможно при просмотре обычного анимированного GIF-файла. Несмотря на то, что gif фактически был преобразован в видеофайл после загрузки, он будет иметь наложенную метку с надписью GIF.

В качестве видеофайла Facebook автоматически воспроизводит видеофайлы в новостной ленте (если у вас отключен этот параметр Facebook), поэтому он должен вести себя как анимированный GIF (постоянный цикл), так как Facebook автоматически зацикливает видео продолжительностью менее 30 секунд. длинная.

Мак Нордструм
источник