7

Graph API を使用して、ファン ページのウォール ポストを取得しています。

Facebook iOS アプリ自体がプレースホルダーの正確な比率を決定できることに気付きました。

ここに画像の説明を入力

http://developers.facebook.com/tools/explorer?method=GET&path=facebook%2Ffeed%3Ffields%3Dpicture

{
    "data": [
             {
             "picture": "http://photos-b.ak.fbcdn.net/hphotos-ak-frc1/247019_457846347622804_946521095_s.jpg",
             "id": "20531316728_10151883063741729",
             "created_time": "2013-05-02T16:57:25+0000"
             },
               :
               :
               :
             {
             "picture": "http://photos-e.ak.fbcdn.net/hphotos-ak-ash4/223257_10151498310776729_930531604_s.jpg", 
             "id": "20531316728_10151498193061729", 
             "created_time": "2012-10-05T18:42:38+0000"
             }
             ], 
    "paging": {
        "previous": "https://graph.facebook.com/20531316728/feed?fields=picture&limit=25&since=1367513845", 
        "next": "https://graph.facebook.com/20531316728/feed?fields=picture&limit=25&until=1349462557"
    }
}

そこには、API 応答に写真の寸法の情報が含まれていません。Facebook iOS アプリのようなカスタム クライアントで正しいプレースホルダー サイズが必要です。

/facebook/feed?fields=picture,width,heightを追加しようとしましたが、対応する情報を取得できませんでした。

API 自体から画像の高さと幅のパラメーターを取得する方法はありますか?

4

2 に答える 2

1

いいえ、API は、/page_id/feed またはストリーム テーブルからのポスト フィードに基づいて、すべての画像のサイズを返すわけではありません。

あなたができることは次のとおりです。

SELECT post_id, created_time, actor_id, attachment, message FROM stream WHERE source_id=PAGE_ID AND created_time<now() LIMIT 50

投稿タイプが写真の場合: ここに画像の説明を入力

投稿タイプが動画の場合: ここに画像の説明を入力

投稿タイプが fbexternal で始まるリンクの場合 (パラメータ w と h を抽出): ここに画像の説明を入力

投稿タイプが fbexternal なしのリンク (Facebook の写真) の場合、ここでスタックしました!: ここに画像の説明を入力

コードのプロトタイプ:

if attachment:
    image_url = attachment.media[0].src
    if image_url:
        m = image_url.photo.images
        if m:
            if m.src == image_url:
                image_width = m.width
                image_height = m.height
        else: #no dimensions info
            if host by fbexternal:
                #extract parameter w and h from https://fbexternal-a.akamaihd.net/safe_image.php?d=AQBhfbzbNudc_SE8&w=130&h=130&url=http%3A%2F%2F
                image_width = 130
                image_height = 130
             else:
                 Stuck here, very hard to get extract photo id based on this url, a lot of work!

結論として、写真をダウンロードした後に画像の幅と高さを取得することを強くお勧めします。たとえば、PHP には getimagesize 関数があり、python には Python Imaging Library (PIL) があります。

于 2013-05-10T10:01:46.697 に答える