2012-05-17 84 views

回答

3

的圖形API僅*提供下列尺寸(與所述類型參數指定圖片大小):

  • 平方:50x50像素

  • :50個像素寬,可變高度

  • 正常:100像素寬,可變高度

  • :約200像素寬,可變高度

如果你想要的形象是100×100,你就必須獲取「正常」的大小和裁剪自己,例如如果你正在使用PHP檢查imagecopyresampled功能

* UPDATE

正如下面的評論中指出,這個答案是正確的在2012年5月,但現在你也可以選擇使用以獲得不同尺寸的選項graph.facebook.com/ UID /照片?寬度= N &高度= N,如在從傑里米更近的答案描述。

+0

你可以得到你想要的任何尺寸的圖片,你不侷限於這四個選項。看@傑里米的答案。 –

+1

@LukaRamishvili:是的,你不再侷限於這四種尺寸。然而,他們是原始問題時唯一的選擇,對OP的這個答案是準確的。傑里米的答案在添加了更多選項(2012年8月我相信)後添加,現在有效。 – FluffyKitten

+0

我明白了。感謝提醒我,我沒有看日期。 –

1
- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
    //UIGraphicsBeginImageContext(newSize); 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return newImage; 
} 


- (UIImage *)crop:(CGRect)rect andIm:(UIImage*) im { 

    CGFloat scale = [[UIScreen mainScreen] scale]; 

    if (scale>1.0) { 
     rect = CGRectMake(rect.origin.x*scale , rect.origin.y*scale, rect.size.width*scale, rect.size.height*scale); 
    } 

    CGImageRef imageRef = CGImageCreateWithImageInRect([im CGImage], rect); 
    UIImage *result = [UIImage imageWithCGImage:imageRef]; 
    CGImageRelease(imageRef); 
    return result; 
} 

-(UIImage*)squareLargeFacebookProfilePhoto:(UIImage*) image{ 

    float startPosX=0.0; 
    float startPosY=0.0; 
    float newsizeW; 
    float newsizeH; 

    if (image.size.height>=image.size.width){ 
     newsizeW=200; 
     float diff=200-image.size.width; 
     newsizeH=image.size.height+diff/image.size.width*image.size.height; 

     if (newsizeH>200){ 
      startPosY=(newsizeH-200.0)/8.0; 
     } 
    } 
    else 
    { 
     newsizeH=200; 
     float diff=200-image.size.height; 
     newsizeW=image.size.width+diff/image.size.height*image.size.width; 

     if (newsizeW>200){ 
      startPosX=(newsizeW-200.0)/2.0; 
     } 
    } 


    UIImage *imresized=[self imageWithImage:image scaledToSize:CGSizeMake(newsizeW, newsizeH)]; 
    return [self crop:CGRectMake(startPosX, startPosY, 200, 200) andIm:imresized]; 

} 

的URL https://graph.facebook.com/user_id/picture?type=square給了我們一個小 資料圖片(50×50)

1)你必須從網址下載圖像首先:

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

例如加載圖片

NSURL * imageURL = [NSURL URLWithString:https://graph.facebook.com/user_id/picture?type=large]; 
NSData * imageData = [NSData dataWithContentsOfURL:imageURL]; 
UIImage *image = [UIImage imageWithData:imageData]; 

2)然後,只需調用返回的大小大的Facebook個人資料圖片(200×200)的功能:

UIImage *LargeProfileImage=[self squareLargeFacebookProfilePhoto:image]; 

注:代碼編寫與使用ARC內存管理

+1

完全使用這個。 – Joseph

+0

^^這是什麼東西? – frnhr

1

您也可以嘗試這樣的:

https://graph.facebook.com/INSERTUIDHERE/picture?width=100&height=100

不要忘記與用戶的UID,以取代 'INSERTUIDHERE'你正試圖獲得一張圖片。嵌入式紅寶石在這裏很好用。例如:... ook.com/ <%= @ problem.user.uid%>/pic ...

請注意,您可以將尺寸更改爲任何您想要的尺寸(例如:50x50或500x500)。它應該從照片的中心裁剪並調整大小。它(出於某種原因)有時會增大或縮小几個像素,但我認爲這與原始照片的尺寸有關。耶首先回答這個!

這是我的愚蠢的杯子在100×100使用上面的鏈接。我會提供更多,但是,因爲我是n00b,所以SO會阻止發佈多個鏈接。

100×100:https://graph.facebook.com/8644397/picture?width=100&height=100