【问题标题】:How to get the bigger profile picture of a facebook page如何获得更大的 Facebook 页面的个人资料图片
【发布时间】:2011-09-04 19:52:40
【问题描述】:

我通过以下 URL 从 facebook 获取图像:http://external.ak.fbcdn.net/safe_image.php?d=d282e1e7c86c9270232f97ddc737df39&w=90&h=90&url=http%3A%2F%2Fi52.tinypic.com%2F2q0ixzl.jpg

现在,我想要一个更大的版本,比如 200 x 200。有相应的网址吗?如果没有,我怎样才能将这个图像转换成更大的尺寸?

【问题讨论】:

  • 只需设置图片的宽度和高度
  • 检查我的答案。我已经给出了答案。
  • 不,它不起作用。它仅适用于 90by90。
  • 你能给我问题中提到的个人资料的网址吗?
  • 使用这个网址:graph.facebook.com/110264225728612/picture?type=large ,这是一张 200*160 尺寸的图片

标签: iphone objective-c ios facebook url


【解决方案1】:

一般如果要采集用户或页面的头像,图标大小图片的格式为:

http://graph.facebook.com/[page id/profile id]/picture

对于大图:

http://graph.facebook.com/[page id/profile id]/picture?type=large

编辑注意点: 如果存储在 facebook 服务器上的图像小于 200*200 尺寸,您将获得可用的最高分辨率图像,例如:128*160。您可以使用 GD 库调整它的大小。

还有一件事

Facebook 支持 200*600px 作为个人资料图片的最高分辨率。它会通过保持纵横比来调整图像大小以适应这些尺寸。

*2017 年 2 月 19 日更新 *

我们需要使用这个新的 URL 格式来获取所需的个人资料图片。

http://graph.facebook.com/{profile_id}/picture?width={number‌​}&height={number}

[谢谢https://stackoverflow.com/users/2829128/vay]

【讨论】:

  • @PJR - 您能否将答案标记为正确,以便其他人以后更容易从这个问题中收集帮助。谢谢。
  • 有没有其他方法可以获得比 200*600 更大的图片?。
  • 非常感谢,它非常有用,我正在寻找这个解决方案,非常感谢
  • 是否有可能在具有属性字段的多请求中获得全局? http://graph.facebook.com/me/pages?fields=id,name,picture,description&access_token=[******]
  • @loldop 使用多个请求获取大图:http://graph.facebook.com/me/pages?fields=id,name,picture.type(large ),description&access_to‌​ken=[******]
【解决方案2】:

如果你想获得更大的图片,你可以像这样设置你想要的高度和宽度:

http://graph.facebook.com/[page id/profile id]/picture?width=[number]&height=[number]

更多信息和示例在这里:Pictures - Facebook Developers

【讨论】:

  • 这应该是答案,恕我直言。
【解决方案3】:

这个也可以

图片类型(大)

例子

 if ([FBSDKAccessToken currentAccessToken]) {
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"picture.type(large),name, email"}]
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
         if (!error) {
             NSLog(@"fetched user:%@", result);
             NSMutableDictionary *data=[[NSMutableDictionary alloc]init];
             data=result;


             fbId.text=[data valueForKey:@"id"];
             userName.text=[data valueForKey:@"name"];
             _emailFB.text=[data valueForKey:@"email"];



             NSDictionary *dictionary = (NSDictionary *)result;

             NSDictionary *data3 = [dictionary objectForKey:@"picture"];
             NSDictionary *data2 = [data3 objectForKey:@"data"];
             NSString *photoUrl = (NSString *)[data2 objectForKey:@"url"];

             NSLog(@"Photo : %@",photoUrl);


         }
     }];
}

}

【讨论】:

    【解决方案4】:

    是的,有一种方法可以获取 facebook 页面的原始(大部分时间更大)个人资料图片。

    其实答案已经在问题中了。原始图像 url 已经嵌入到 save_image url 中。在您的情况下,它是“url=http%3A%2F%2Fi52.tinypic.com%2F2q0ixzl.jpg”,意思是“http://i52.tinypic.com/2q0ixzl.jpg

    就我而言,伦敦的页面是

    https://www.facebook.com/pages/London-United-Kingdom/106078429431815?fref=ts
    

    我可以通过搜索关键字 London 轻松获取其 fb 对象 ID。 我尝试使用宽度和高度参数。它们适用于用户个人资料图片或用户共享图片,但不能适用于公共页面个人资料图片。

    https://graph.facebook.com/106078429431815/picture?width=300&height=300  // can’t work
    

    我可以通过以下网址获得最大的图片,只有 180x77

    https://graph.facebook.com/106078429431815/picture?type=large
    

    但是我可以使用fb graph api获取safe_image.php url,并且原始图像url也在参数的url部分中

    "url": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQCrtKykRotXBuaS&w=180&h=540&url=http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Farchive%2F2%2F21%2F20141005220235%2521City_of_London_skyline_at_dusk.jpg%2F720px-City_of_London_skyline_at_dusk.jpg&fallback=hub_city&prefix=d"
    

    这是我使用的代码。

    [FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"/%@/picture?redirect=false&type=large",[firstCityPage objectForKey:@"id"]]
                        completionHandler:^(
                                            FBRequestConnection *connection,
                                            id result,
                                            NSError *error
                                            ) {
    
                            NSString *profileImgUrl = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=large", [firstCityPage objectForKey:@"id"]];
    
                            if (error==nil) {
                                NSString *fbSaveImgUrl = [[(NSDictionary*)result objectForKey:@"data"] objectForKey:@"url"];
    
                                NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:[NSURL URLWithString:fbSaveImgUrl]
                                                                            resolvingAgainstBaseURL:NO];
    
                                for (NSURLQueryItem *queryItem in urlComponents.queryItems) {
                                    if ([queryItem.name isEqualToString:@"url"]) {
                                        profileImgUrl = queryItem.value;
                                        break;
                                    }
                                }
    
                            } else {
                                NSLog(@"%@",[error description]);
                            }
    
                            NSLog(@"url: %@", profileImgUrl);
    
                            ...
                        }];
    

    但是,有风险。

    1. 不保证外部图片网址会被验证。

    2. Facebook 将来可能会删除 safe_image url 中的显式外部 url 或对开发者隐藏 safe_image url。

    使用它需要您自担风险。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多