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 回答
0

我不确定是否有更简单的方法来获得所需的宽度和高度,但这是一种确定但有点冗长的方法。

以您为例,您看到的第一张图片“20531316728_10151883063741729”的 ID 实际上并不是图片的 ID。这是图片所在的帖子。

您可以做的是查询该 postID

http://developers.facebook.com/tools/explorer?method=GET&path=20531316728_10151883063741729

然后它将公开图片的 object_id 457846347622804(进行搜索,您会明白我的意思)。现在您查询该图片的 ID,您将获得您的宽度和高度。

http://developers.facebook.com/tools/explorer?method=GET&path=457846347622804

从那时起,您应该能够获得所需的比率。

如果有人有一种优雅的方式来完成这项工作,我也很想知道。

于 2013-05-10T08:04:50.293 回答