web-dev-qa-db-ja.com

アニメーションGIFをFacebookに投稿するにはどうすればよいですか?

友人が、Facebookのスタートページのメッセージフィードに直接アニメーション化する画像を投稿しました。これはどのように可能ですか?これをどのように行うことができますか?

これは、Facebookが使用するURLです。 http://photos-c.ak.fbcdn.net/hphotos-ak-snc3/29301_442976909814_310716489814_5773694_3162803_s.jpg

.jpgに名前が変更されたGIF画像ですか?おそらくない。

役立つかどうかはわかりませんが、その画像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);\">
22
bitbonk

2015年5月

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

最初に心に留めておくべきことは、この機能はGIFアップロードではなくGIFリンクで機能するということです。少なくとも今のところ、お気に入りのGIFをアップロードしようとしても、Facebookで使用可能、再生可能なGIFは作成されません。

[...]

Giphy、Imgur、GFYcatなどのサービスは、ウェブ全体に大きなGIFを簡単に埋め込むことを試みています。

[...]

giphyまたはその他のGIFサービスの完全なGIF URLを使用していることを確認してください。

2012年4月-現在のエクスプロイトはモバイルテキストアプリケーションを使用して画像を渡します

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ピクセルに変更する
  • Facebook画像ツールをバイパスするために、ヘッダーデータを変更するか、ファイルの末尾にバイトを追加する(GIFデータの末尾の3Bなど)
    Data Change
  • Facebook FBML経由
  • Facebook HMTLタグでメモ

最初の作業方法は、Facebookサーバーで現在利用可能なgifのセットを、何らかの方法でユーザーにタグ付けして共有することです。現在、円を描いているものとは別に、新しいGIFが表示されることはありません。

2番目は、Facebookアプリケーションを介したFacebook APIの不正使用を利用します。開発者は、GIFをビデオ埋め込みプレビューに隠しました。

Developer application

今、それを理解することを想定すると、あなたは禁止されます...これは、画像アップロードシステムに欠陥があり、GIFまたは画像に隠されて危険なコードを実行できることを意味するためです。 Facebook Photo Teamは、GIFがもはや存在しないことを保証するようです。

ナサニエルロマン

Quora Image: That was a bug that was on the site for just a short period of time. It got fixed awhile back.

以前は古い Facebook Dev Wiki これの一部は今では変更されているかもしれませんが、要旨は同じままです

Facebookプラットフォームは、imgタグを特別な方法で処理します。ページを公開するとき、Facebookサーバーは画像URLを要求してからこれらの画像を提供し、*。facebook.comドメインを使用してすべてのimgタグのsrc属性を書き換えます。これにより、Facebookのユーザーのプライバシーが保護され、ユーザーは画像のサービス品質をより適切に制御できます。

画像キャッシュが存在する理由はいくつかあります。

  • ユーザーのプロファイルに表示される画像の品質と均一性をある程度確保する方法が必要です(アニメーション画像、50 MB画像などはありません)
  • ユーザーのプライバシーを保護し、悪意のあるアプリケーションが閲覧ユーザーのブラウザーから直接行われた画像リクエストから情報を抽出することを許可しないようにする必要があります
  • あなたにとっておそらく最も重要なのは、画像キャッシュが開発者をこれらの画像を提供する潜在的に莫大な負荷から保護し、代わりにFacebookのリソースに負担をかけることです。

そして最後に私が他の場所で言及したように

また、TOSのどこにも記載されていませんが、

ファイルをアップロードすることにより、この写真を配布する権利があり、それが 利用規約 に違反していないことを証明します。

そのため、テストユーザーアカウントでテストするために、個人アカウントでエクスプロイト(見つかった場合)を使用することで、パットを取得できます。アカウントが強制終了されることは間違いありません。

追伸Facebookの従業員にはこの情報が表示されないサイトを閲覧しているとは思わないでください。エクスプロイトが公表された瞬間、同じ時間内にシャットダウンされます

15
phwd

拡張子はjpegですが、それでもgifファイルです

Firefox image

あなたの質問に答えるために、これは 私が見つけたもの です:

あなたがしなければならないことは、あなたのプロフィール写真として小さなアニメーションgif(約50 KB以下)をアップロードすることです(Facebookは、大きすぎるアニメーションgifを平坦化しますが、小さなものは検出しません)。プロフィールのアルバムに追加されます。アイコン自体はアニメーション化されません。ただし、Facebookのプロフィール写真フォルダーにアニメーションとして表示されます。その写真に移動して[共有]をクリックすると、壁にアニメーションとして表示されます。

プロファイルサムネイルは、常にベースイメージから生成されます。ベースイメージが120x120未満の場合、アニメーションは最小化されたビューと最大化されたビューの両方でそのまま残ります。そのサイズを超えるものは、最小化されたギャラリーのサムネイルとして収まるようにサイズを変更する必要があり、アニメーションは失われますが、フルサイズはアニメーションのままにする必要があります。

6
Sathyajith Bhat

私は調査し、画像がアプリケーションによって生成されることを発見しました http://apps.facebook.com/animated-picture/ このアプリケーションのSWF(フラッシュ)からこのようなファイルをアニメーションとして生成できますGIFをFacebookに公開してください!

1
Fábio Colella

Facebookは、アニメーションGIFファイルのネイティブなアップロードをサポートするようになりました。ニュースフィードまたはタイムラインページのステータス更新ボックスで[画像のアップロード]ボタンをクリックしてから、アップロードするアニメーションgifファイルを選択すると、アップロードされ、Facebookはそれを.mp4ビデオファイルに変換します。通常のFacebookビデオファイルのように、特定のフレームで一時停止する機能を含みます。これは、通常のアニメーションgifファイルを表示するときのオプションではありません。 GIFはアップロード後に実際にビデオファイルに変換されていますが、GIFというオーバーレイラベルが付いています。

そのビデオファイルとして、Facebookはニュースフィードでビデオファイルを自動再生します(Facebookの設定がオフになっていない場合)。したがって、Facebookは30秒未満のビデオを自動的にループするため、アニメーションGIF(一定のループ)のように動作します長いです。

0
mack nordstrum