2012-08-10 70 views
24

如何獲取帶有選擇視圖用戶設置的Facebook照片(如果他們使用大圖像)。如果我在路徑圖中使用type =「large」或「normal」或「small」,那麼我會得到圖像,但它不是方形的,也不是用戶設置的選擇視圖。那麼,我怎樣才能得到正方形的照片和用戶設置的視圖圖形API獲取照片正方形(100x100)

+0

對於'圖片'沒有任何東西獲得100x100正方形,只有一個很小的50x50 ...'https://developers.facebook.com/docs/graph-api/reference/v2.0/user /圖片'一些圖像不是方形的,將會被返回。 – vsync 2014-06-18 19:21:57

回答

3

請嘗試使用square類型。如下:

http://graph.facebook.com/[user_id]/picture?type=square

平方大小被限制爲50×50。如果您想要大尺寸,則必須放大正方形版本或裁剪大版本。

如果您不介意自己檢索和裁剪圖像,請按照我的tutorial here代碼完成此操作。它會讓你生成大於50px的方形圖像。

48

你可以得到比正常的一個type=square通過請求設置widthheight參數圖片(這將是在尺寸僅爲50×50像素)高維的正方形圖片。

https://developers.facebook.com/docs/reference/api/user/,「圖片報」的連接,報價:

「此外,你可以指定寬度和高度URL參數請求特定大小的圖片。這將返回一個可用的配置文件圖片最接近到請求的大小和請求的寬高比。 [...]如果width =身高,我們總是會返回一個正方形圖片「

例子:

https://graph.facebook.com/4/picture?type=square - 扎克伯格的‘正常’的方形輪廓PIC,尺寸50×50

https://graph.facebook.com/4/picture?width=100&height=100 - 100x100的像素,完美匹配要求的尺寸

https://graph.facebook.com/4/picture?width=150&height=150 - 要求150x150,取而代之的是156x156。

如果你能忍受可能有時會得到的圖像可能會稍大(或更小),然後請求的大小,你應該沒問題。

否則,需要進行一些測試以確定Facebook是否存在某些方形圖片尺寸,並且該圖片尺寸總是「有現貨」並提供完全匹配,或者對於每個用戶而言可能會因圖片而異他們上傳了。

+0

如果頭像是大圖片,並且用戶移動圖片以在視圖端口中設置圖像,則它會得到錯誤的文件(圖像返回不是我想要的大小或者有時它不是用戶設置的視圖端口中的圖像)。我該如何處理這種情況? – 2012-08-10 12:21:50

+1

@HuyTran https://graph.facebook.com/zuck/picture?type=square **會在用戶集的視圖端口中返回一個方形圖像。 – borisdiakur 2012-08-10 13:48:56

+2

@Lego:有了這個路徑,我可以在視圖端口獲得圖像,它只是尺寸爲50x50。但我希望尺寸爲100x100,用戶上傳大圖像並且不移動圖像(在編輯縮略圖中) - >路徑結果'graph.facebook.com/zuck/picture?width = 100&height = 100'將得到完全的圖像與我想要的大小,以防用戶移動圖像 - >圖像的結果大小爲50x50。我不知道發生了什麼? – 2012-08-11 11:28:39

1

通過查詢user's profile data using FQL來獲取照片。在你的情況下,你不應該需要任何訪問令牌。有一個叫pic_crop列它是一個包含你需要的URI的對象:

的URL最大規模的方形輪廓圖片爲對象 被查詢。 widthheight:這張圖片的像素尺寸。 left,top,right, bottom:用戶爲該簡檔圖片選擇的 裁剪的像素座標。

使用Graph API Explorer來測試您的查詢。


更新:從Facebook查詢語言(FQL)參考:

Version 2.0 Facebook平臺API的是最後的版本,其中FQL將可用。 2.0之後的版本不支持FQL。請遷移您的應用程序以使用Graph API而不是FQL。有關當前版本信息,請參閱我們的changelog

+1

對於未來的讀者:FQL將被棄用 – Raptor 2014-12-23 09:21:05

12
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{ @"fields" : @"id,name,picture.width(100).height(100)"}] 
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
      if (!error) { 
      } 

,而不是100,你可以把200,300加密的響應,並與主要

+0

這個選項對我來說更好 – 2015-11-18 14:19:39

+0

您能否請檢查這篇文章並幫助我http://stackoverflow.com/questions/37135893/high-resolution-images-from-facebook – Jecky 2016-05-16 07:28:08

2

這爲我工作得到它。檢查以下查詢, NSString * graphPath = [NSString stringWithFormat:@"%@?fields=photos.fields(id,link,source)", albumID];

相關問題