Jak zamieszczać animowane pliki GIF na Facebooku?

22

Znajomy opublikował obraz, który animował bezpośrednio w kanale wiadomości na mojej stronie początkowej Facebooka. Jak to jest możliwe? Jak można to zrobić?

To jest adres URL używany przez Facebooka: http://photos-c.ak.fbcdn.net/hphotos-ak-snc3/29301_442976909814_310716489814_5773694_3162803_s.jpg

Czy to właśnie obraz GIF został przemianowany na .jpg? Prawdopodobnie nie.

Nie wiem, czy to pomaga, czy coś, ale oto część (skrypt), która zawiera ten adres URL obrazu:

<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> 

Ważna część powyższego wydaje się tutaj:

style=\"background-image: url(http:\/\/photos-f.ak.fbcdn.net\/hphotos-ak-snc4\/156854_175015452521815_100000400858474_459703_1557976_s.jpg);\">
bitbonk
źródło
Nie możesz po prostu zmienić nazwy gif na jpg i oczekiwać, że zadziała.
ChrisF
Tak, właśnie tego spróbowałem. GIF jest nadal wyświetlany poprawnie na Facebooku, ale nie jest animowany.
bitbonk

Odpowiedzi:

15

Maja 2015 r

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

Pierwszą rzeczą, o której należy pamiętać, jest to, że ta funkcja działa z linkami GIF, a nie z plikami GIF. Przynajmniej na razie próba przesłania twojego ulubionego GIF-a nie da użytecznego, grywalnego GIF-a na Facebooku.

[...]

Usługi takie jak Giphy, Imgur, GFYcat i inne starają się ułatwić osadzanie dużych plików GIF w Internecie

[...]

upewnij się, że używasz pełnego adresu URL GIF z Giphy lub innych usług GIF.

Kwiecień 2012 - Current Exploit używa mobilnej aplikacji tekstowej do przekazywania obrazów

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'}}}

Jedyne, czego naprawdę potrzebujemy, to animationurlobraz hostowany na Facebooku.

Są to sposoby, które wcześniej były możliwe

  • Zmiana nazwy pliku na GIF
  • Zmiana wymiarów pliku na około 120 pikseli, aby ominąć kompresję
  • Zmienianie danych nagłówka lub dodawanie bajtów (na przykład kończące się 3B w danych GIF) na końcu pliku, aby ominąć narzędzia graficzne Facebooka
    Zmiana danych
  • Przez Facebook FBML
  • Przez Facebook tagi HMTL w notatkach

Pierwszym działającym sposobem wydaje się udostępnianie aktualnie dostępnego zestawu gifów na serwerach Facebooka poprzez oznaczanie w nim użytkowników. Nie widziałem żadnych nowych plików GIF oprócz tych, które obecnie krążą.

Drugi wykorzystuje nadużycie interfejsu API Facebooka za pośrednictwem aplikacji Facebook. Deweloper ukrył pliki GIF w podglądzie osadzania wideo.

Aplikacja dla programistów

Teraz, zakładając, że ktoś to wymyśli, zostaniesz zbanowany ... ponieważ oznacza to, że system przesyłania obrazów jest wadliwy, a niebezpieczny kod można wykonać, ukrywając się w pliku GIF lub obrazku. Wygląda na to, że Facebook Photo Team dopilnuje, aby GIF-y nie pozostały w pobliżu.

Nataniel Roman

Quora Image: To był błąd, który pojawił się na stronie przez krótki okres czasu.  Zostało to naprawione jakiś czas temu.

A wcześniej na starej Wiki dla deweloperów Facebooka niektóre z nich mogły już się zmienić, ale sedno pozostaje takie samo

Platforma Facebook obsługuje tagi img w specjalny sposób. Podczas publikowania strony serwery Facebook żądają adresów URL obrazów, a następnie obsługują te obrazy, przepisując atrybut src wszystkich tagów img przy użyciu domeny * .facebook.com. Chroni to prywatność użytkowników Facebooka i pozwala im lepiej kontrolować jakość obsługi ich zdjęć.

Istnieje kilka powodów istnienia pamięci podręcznej obrazów:

  • Potrzebujemy sposobu, aby zapewnić pewien stopień jakości i jednorodności obrazów wyświetlanych w profilach użytkowników (bez obrazów animowanych, bez obrazów 50 MB itp.)
  • Musimy chronić prywatność użytkowników i nie zezwalać złośliwym aplikacjom na wyodrębnianie informacji z żądań graficznych wysyłanych bezpośrednio z przeglądarki użytkownika przeglądającego
  • Pamięć podręczna obrazów, prawdopodobnie najważniejsza dla Ciebie, chroni programistów przed potencjalnie ogromnym obciążeniem wyświetlania tych obrazów, obciążając zasoby Facebooka

I w końcu, jak wspomniałem gdzie indziej

Ponadto, chociaż nie zostało to nigdzie zaznaczone w TOS,

Przesyłając plik, potwierdzasz, że masz prawo rozpowszechniać to zdjęcie i że nie narusza ono warunków korzystania z usługi

Więc możesz dostać poklepanie z tyłu za testowanie na testowym koncie użytkownika, ale używając exploita (jeśli został znaleziony) na koncie osobistym. Jestem pewien, że w końcu zobaczysz zamknięcie konta.

PS Nie myśl, ponieważ podczas przeglądania stron pracownicy Facebooka nie widzą tych informacji. W momencie, gdy exploit jest znany publicznie, w tym samym czasie zostanie on zamknięty

phwd
źródło
6

Mimo że rozszerzenie to JPEG, nadal jest to plik gif

Obraz Firefox

Aby odpowiedzieć na twoje pytanie, oto, co znalazłem :

Musisz przesłać mały animowany gif (około 50 KB lub mniej) jako swoje zdjęcie profilowe (Facebook spłaszczy animowane gify, które są zbyt duże, ale nie wykrywają mniejszych). Będzie to wtedy w albumie Twojego profilu. Twoja ikona NIE będzie animowana. Jednak zobaczysz go jako animowanego w folderze zdjęć profilowych na Facebooku, a przechodząc do tego zdjęcia i klikając „udostępnij”, pojawi się na ścianie jako animowany.

Miniatury profili są zawsze generowane z obrazu podstawowego. Jeśli obraz podstawowy ma wymiary poniżej 120 x 120, animacja pozostanie nienaruszona zarówno przez zminimalizowane, jak i zmaksymalizowane widoki. Wszystko, co przekracza ten rozmiar, będzie musiało zostać przeskalowane, aby zmieściło się jako zminimalizowana miniatura galerii i utraci animację, jednak pełny rozmiar powinien pozostać animowany.

Sathyajith Bhat
źródło
1

Zbadałem i stwierdziłem, że obraz jest generowany przez aplikację http://apps.facebook.com/animated-picture/ Możesz generować takie pliki z pliku SWF (flash) w tej aplikacji jako animowany GIF i publikować na Facebooku!

Fábio Colella
źródło
Niestety aplikacja nie jest już dostępna. Facebook powinien włączyć opcję korzystania z gifów.
skan
0

Facebook obsługuje teraz przesyłanie plików animowanych gif w sposób natywny. Jeśli klikniesz przycisk przesyłania obrazu w polu aktualizacji statusu na stronie Newsfeed lub na osi czasu, a następnie wybierz animowany plik gif, który chcesz przesłać, zostanie on przesłany, a Facebook przekształci go w plik wideo .mp4, który można odtworzyć jak normalny plik wideo na Facebooku, w tym możliwość wstrzymywania w określonych klatkach, co nie jest opcją podczas oglądania normalnego animowanego pliku gif. Mimo że gif został faktycznie przekonwertowany na plik wideo po przesłaniu, będzie miał etykietę nakładki z napisem GIF.

Ponieważ jest to plik wideo, a Facebook automatycznie odtwarza pliki wideo w kanale aktualności (jeśli nie masz tego ustawienia Facebooka wyłączonego), powinien on zachowywać się jak animowany gif (ciągłe zapętlanie), ponieważ Facebook automatycznie zapętla filmy, które są krótsze niż 30 sekund długie.

Mack Nordstrum
źródło