Como postar GIFs animados no Facebook?


22

Um amigo postou uma imagem que estava animando diretamente no feed de mensagens na minha página inicial do Facebook. Como isso é possível? Como isso pode ser feito?

Este é o URL usado pelo Facebook: http://photos-c.ak.fbcdn.net/hphotos-ak-snc3/29301_442976909814_310716489814_5773694_3162803_s.jpg

É uma imagem GIF apenas renomeada .jpg? Provavelmente não.

Não sei se ajuda ou algo assim, mas aqui está a parte (script) que contém o URL dessa imagem:

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

A parte importante do exposto acima parece estar aqui:

style=\"background-image: url(http:\/\/photos-f.ak.fbcdn.net\/hphotos-ak-snc4\/156854_175015452521815_100000400858474_459703_1557976_s.jpg);\">

Você não pode simplesmente renomear um gif para jpg e esperar que funcione.
ChrisF

Sim, eu apenas tentei isso. O GIF ainda é exibido corretamente no facebook, mas não é animado.
Bitbonk 28/05

Respostas:


15

Maio 2015

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

A primeira coisa a ter em mente é que o recurso funciona com links GIF, não com uploads de GIF. Pelo menos por enquanto, a tentativa de fazer upload de seu GIF favorito não resultará em um GIF utilizável e reproduzível no Facebook.

[...]

Serviços como Giphy, Imgur, GFYcat e outros estão tentando facilitar a incorporação de GIFs grandes em toda a Web

[...]

verifique se você está usando o URL completo do GIF da Giphy ou de outros serviços GIF.

Abril de 2012 - O Exploit atual usa o aplicativo de texto móvel para transmitir imagens

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

A única coisa realmente necessária é a animationurl, que precisa ser uma imagem hospedada no Facebook.

Estas são as maneiras que eram anteriormente possíveis

  • Alterando o nome do arquivo para GIF
  • Alterando as dimensões do arquivo para cerca de 120 px para ignorar a compactação
  • Alterando dados do cabeçalho ou adicionando bytes (por exemplo, o 3B final nos dados GIF) ao final do arquivo para ignorar as ferramentas de imagem do Facebook
    Alteração de dados
  • Via Facebook FBML
  • Via tags HMTL do Facebook em notas

A primeira maneira de trabalhar parece compartilhar o conjunto de gifs atualmente disponíveis nos servidores do Facebook por meio da marcação de usuários. Eu não vi nenhum GIF novo aparecer além daqueles que circulam atualmente.

O segundo utiliza um abuso da API do Facebook por meio de um aplicativo do Facebook. O desenvolvedor ocultou os GIFs em uma visualização de incorporação de vídeo.

Aplicativo desenvolvedor

Agora, supondo que um fosse descobrir, você seria banido ... porque isso significa que o sistema de upload de imagens é defeituoso e que código perigoso pode ser executado ocultando-se em um GIF ou imagem. Parece que o Facebook Photo Team garantirá que os GIFs não fiquem mais por perto.

Nathaniel Roman

Imagem do Quora: Foi um bug que ocorreu no site por apenas um curto período de tempo.  Foi consertado por algum tempo.

E anteriormente no antigo Facebook Dev Wiki, parte disso pode ter mudado até agora, mas a essência permanece a mesma

A Plataforma do Facebook lida com as tags img de maneira especial. Ao publicar uma página, os servidores do Facebook solicitam qualquer URL de imagem e as veiculam, reescrevendo o atributo src de todas as tags img usando um domínio * .facebook.com. Isso protege a privacidade dos usuários do Facebook e permite que eles controlem melhor a qualidade do serviço de suas imagens.

Existem vários motivos para a existência do cache de imagem:

  • Precisamos de uma maneira de garantir algum grau de qualidade e uniformidade nas imagens exibidas nos perfis dos usuários (sem imagens animadas, sem imagens de 50 MB, etc.)
  • Precisamos proteger a privacidade dos usuários e não permitir que aplicativos mal-intencionados extraiam informações de solicitações de imagem feitas diretamente do navegador do usuário que está visualizando.
  • Provavelmente o mais importante para você, o cache de imagem protege os desenvolvedores da carga potencialmente enorme de veicular essas imagens, sobrecarregando os recursos do Facebook.

E no final, como já mencionei em outros lugares

Além disso, embora não seja declarado em nenhum lugar dos Termos de Serviço,

Ao fazer o upload de um arquivo, você certifica que tem o direito de distribuir esta imagem e que ela não viola os Termos de Serviço

Portanto, você pode dar um tapinha nas costas para testar em uma conta de usuário de teste, mas usando uma exploração (se encontrada) em uma conta pessoal. Estou certo de que você acabará vendo o encerramento da sua conta.

PS Não pense porque, quando você está navegando em sites, os Funcionários do Facebook não veem essas informações. No momento em que uma exploração é conhecida publicamente, na mesma quantidade de tempo em que será encerrada


6

Embora a extensão seja jpeg, ainda é um arquivo gif

Imagem do Firefox

Para responder sua pergunta, foi o que eu encontrei :

O que você precisa fazer é enviar um pequeno gif animado (cerca de 50 KB ou menos) como sua foto de perfil (o Facebook achatará os gifs animados que são muito grandes, mas não detectam os menores). Ele estará no álbum do seu perfil. Seu próprio ícone NÃO será animado. No entanto, você a verá como animada na sua pasta de fotos de perfil do Facebook e, acessando a foto e clicando em "compartilhar", ela aparecerá no seu mural como animada.

As miniaturas de perfil são sempre geradas a partir da imagem base. Se a imagem base estiver abaixo de 120 x 120, a animação permanecerá intacta pelas visualizações minimizada e maximizada. Qualquer coisa acima desse tamanho precisará ser redimensionada para caber como uma miniatura minimizada da galeria e perderá a animação; no entanto, o tamanho normal deve permanecer animado.


1

Pesquisei e descobri que a imagem é gerada pelo aplicativo http://apps.facebook.com/animated-picture/ Você pode gerar arquivos como este a partir de um SWF (flash) nesse aplicativo como GIF animado e publicar no seu facebook!


Infelizmente, o aplicativo não está mais disponível. O Facebook deve habilitar a opção de usar gifs.
skan

0

O Facebook agora suporta o upload nativo de arquivos gif animados. Se você clicar no botão de upload de imagem na caixa de atualização de status na página Feed de notícias ou Linha do tempo, depois escolher o arquivo gif animado que deseja enviar, ele será carregado e o Facebook o converterá em um arquivo de vídeo .mp4, que pode ser reproduzido como um arquivo de vídeo normal do Facebook, incluindo a capacidade de pausar em quadros específicos, o que não é uma opção ao exibir um arquivo gif animado normal. Embora o gif tenha sido realmente convertido em um arquivo de vídeo após o upload, ele terá um rótulo de sobreposição dizendo GIF.

Como se trata de um arquivo de vídeo, o Facebook reproduz automaticamente os arquivos de vídeo no Feed de notícias (se você não tiver a configuração do Facebook desativada), devendo se comportar como um gif animado (loop constante), pois o Facebook faz um loop automático de vídeos com menos de 30 segundos grandes.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.