¿Cómo publico GIF animados en Facebook?

22

Un amigo publicó una imagen que estaba animando directamente en el feed de mensajes en mi página de inicio de Facebook. ¿Cómo es esto posible? ¿Cómo se puede hacer esto?

Esta es la URL utilizada por Facebook: http://photos-c.ak.fbcdn.net/hphotos-ak-snc3/29301_442976909814_310716489814_5773694_3162803_s.jpg

¿Es una imagen GIF recién renombrada .jpg? Probablemente no.

No sé si ayuda o algo, pero aquí está la porción (script) que contiene esa URL de imagen:

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

La parte importante de lo anterior parece estar aquí:

style=\"background-image: url(http:\/\/photos-f.ak.fbcdn.net\/hphotos-ak-snc4\/156854_175015452521815_100000400858474_459703_1557976_s.jpg);\">
bitbonk
fuente
No puede simplemente cambiar el nombre de un gif a jpg y esperar que funcione.
ChrisF
Sí, acabo de intentar eso. El GIF todavía se muestra correctamente en Facebook pero no se anima.
bitbonk

Respuestas:

15

Mayo 2015

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

Lo primero que debe tener en cuenta es que la función funciona con enlaces GIF, no con cargas GIF. Al menos por ahora, intentar subir tu GIF favorito no dará como resultado un GIF utilizable y jugable en Facebook.

[...]

Servicios como Giphy, Imgur, GFYcat y otros están tratando de facilitar la inserción de GIF grandes en toda la web.

[...]

asegúrese de estar utilizando la URL completa de GIF de Giphy u otros servicios GIF.

Abril de 2012 : Current Exploit usa la aplicación de texto móvil para pasar imágenes

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

Lo único que realmente se necesita es el animationurl, que debe ser una imagen alojada en Facebook.

Estas son las formas que antes eran posibles.

  • Cambiar nombre de archivo a GIF
  • Cambiar las dimensiones del archivo a alrededor de 120 px para evitar la compresión
  • Cambiar los datos del encabezado o agregar bytes (por ejemplo, el final 3B en los datos GIF) al final del archivo para omitir las herramientas de imagen de Facebook
    Cambio de datos
  • Vía Facebook FBML
  • A través de las etiquetas de Facebook HMTL en las notas

La primera forma de trabajo parece ser compartir de alguna manera el conjunto de gifs actualmente disponibles en los servidores de Facebook mediante el etiquetado de los usuarios. No he visto ningún GIF nuevo aparte de los que circulan actualmente.

El segundo utiliza un abuso de la API de Facebook a través de una aplicación de Facebook. El desarrollador ocultó los GIF en una vista previa de inserción de video.

Aplicación de desarrollador

Ahora, suponiendo que uno lo descubriera, estaría prohibido ... porque esto significa que el sistema de carga de imágenes tiene fallas y que el código peligroso puede ejecutarse al ocultarse en un GIF o imagen. Parece que Facebook Photo Team se asegurará de que los GIF no se queden más.

Nathaniel Roman

Imagen de Quora: Ese fue un error que estuvo en el sitio por un corto período de tiempo.  Se solucionó hace un tiempo.

Y anteriormente en el antiguo Facebook Dev Wiki, algo de esto puede haber cambiado ahora, pero la esencia sigue siendo la misma

La plataforma de Facebook maneja las etiquetas img de manera especial. Al publicar una página, los servidores de Facebook solicitan cualquier URL de imagen y luego sirven estas imágenes, reescribiendo el atributo src de todas las etiquetas img usando un dominio * .facebook.com Esto protege la privacidad de los usuarios de Facebook y les permite controlar mejor la calidad del servicio de sus imágenes.

Existen varias razones para la existencia del caché de imágenes:

  • Necesitamos una forma de garantizar cierto grado de calidad y uniformidad en las imágenes que se muestran en los perfiles de los usuarios (sin imágenes animadas, sin imágenes de 50 MB, etc.)
  • Necesitamos proteger la privacidad de los usuarios y no permitir que las aplicaciones maliciosas extraigan información de las solicitudes de imágenes realizadas directamente desde el navegador de un usuario visualizador.
  • Probablemente lo más importante para usted, el caché de imágenes protege a los desarrolladores de la carga potencialmente enorme de servir estas imágenes, poniendo la carga en los recursos de Facebook.

Y al final como he mencionado en otra parte

Además, aunque no se menciona en ninguna parte de los TOS,

Al cargar un archivo, certifica que tiene derecho a distribuir esta imagen y que no viola los Términos de servicio

Por lo tanto, puede recibir una palmadita en la parte posterior para probar en una cuenta de usuario de prueba pero utilizando un exploit (si se encuentra) en una cuenta personal. Estoy seguro de que terminará viendo una cancelación de su cuenta.

PD No piense porque cuando navega por los sitios los empleados de Facebook no ven esta información. En el momento en que se conoce públicamente un exploit, en el mismo período de tiempo se cerrará

phwd
fuente
6

Aunque la extensión es jpeg, sigue siendo un archivo gif

Imagen de Firefox

Para responder a su pregunta, esto es lo que encontré :

Lo que tiene que hacer es cargar un pequeño gif animado (aproximadamente 50 KB o menos) como su foto de perfil (Facebook aplanará los gif animados que son demasiado grandes, pero no detecta los más pequeños). Luego estará en el álbum de tu perfil. Su icono en sí NO será animado. Sin embargo, lo verá animado en su carpeta de fotos de perfil de Facebook, y al ir a esa foto y hacer clic en "compartir", aparecerá en su muro como animado.

Las miniaturas de perfil siempre se generan a partir de la imagen base. Si la imagen base está por debajo de 120x120, la animación permanecerá intacta a través de las vistas minimizadas y maximizadas. Será necesario cambiar el tamaño de cualquier tamaño que supere ese tamaño para que se ajuste como una miniatura de galería minimizada, y perderá la animación, sin embargo, el tamaño completo debería permanecer animado.

Sathyajith Bhat
fuente
1

Investigué y descubrí que la aplicación http://apps.facebook.com/animated-picture/ genera la imagen. ¡Puede generar archivos como este desde un SWF (flash) en esta aplicación como GIF animado y publicarlos en su facebook!

Fábio Colella
fuente
Lamentablemente, la aplicación ya no está disponible. Facebook debería habilitar la opción de usar gifs.
skan
0

Facebook ahora admite la carga de archivos gif animados de forma nativa. Si hace clic en el botón cargar imagen en el cuadro de actualización de estado en su página de suministro de noticias o línea de tiempo, luego elija el archivo gif animado que desea cargar, se cargará y Facebook lo convertirá en un archivo de video .mp4, que se puede reproducir como un archivo de video normal de Facebook, incluida la capacidad de pausar en cuadros específicos, lo que no es una opción cuando se ve un archivo gif animado normal. Aunque el gif se ha convertido en un archivo de video después de cargarlo, tendrá una etiqueta de superposición que dice GIF.

Como es un archivo de video, y Facebook reproduce automáticamente archivos de video en Newsfeed (si no tiene esa configuración de Facebook desactivada), por lo que debería comportarse como un gif animado (bucle constante), ya que Facebook realiza automáticamente un bucle de videos que duran menos de 30 segundos largo.

mack nordstrum
fuente