如何从脸图api获得100x100平方图片?

时间:2012-05-17 15:30:58

标签: facebook-graph-api

我需要从脸谱图api获得100x100平方的照片。图片必须像标准方形“50x50”图片一样被折弯,但尺寸必须为100x100。谢谢!

3 个答案:

答案 0 :(得分:3)

仅图表API *提供以下尺寸(使用type参数指定图片大小):

  • square :50x50像素

  • :50像素宽,可变高度

  • 正常:100像素宽,可变高度

  • :宽约200像素,高度可变

如果您希望图片为100x100,则必须检索“正常”尺寸并自行裁剪,例如如果你使用php检查imagecopyresampled函数

*更新

正如下面的评论所指出的,这个答案在2012年5月是正确的,但现在你也可以选择使用 graph.facebook.com/ UID来获得不同的尺寸 / picture?width = N & height = N ,如Jeremy最近的回答所述。

答案 1 :(得分: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];

}

网址https://graph.facebook.com/user_id/picture?type=square给了我们一小笔 个人资料图片(50x50)

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)然后只需调用将返回大小(200x200)的大型Facebook个人资料图片的函数:

UIImage *LargeProfileImage=[self squareLargeFacebookProfilePhoto:image];

注意:代码是使用ARC内存管理编写的

答案 2 :(得分:1)

你也可以试试这个:

<强>

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

不要忘记更换“INSERTUIDHERE”&#39;使用您尝试获取图像的用户的UID。嵌入式ruby在这里工作得很好。例如:... ook.com/<%= @ problem.user.uid%&gt; / pic ...

请注意,您可以将尺寸更改为您想要的任何尺寸(例如:50x50或500x500)。它应该从照片的中心裁剪并调整大小。它(由于某种原因)有时是几个像素或更大,但我认为这更多地与原始照片的尺寸有关。 Yay首先回答SO!

这是我使用上面的链接以100 x 100的愚蠢杯子。我提供了更多,但是因为我是一个n00b,所以SO正在阻止发布多个链接。

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