Facebook graph api 如何从facebook graph api获取100x100平方米的图片?

Facebook graph api 如何从facebook graph api获取100x100平方米的图片?,facebook-graph-api,Facebook Graph Api,我需要从facebook graph api获取100x100平方米的图片。图片必须像standart square 50x50图片一样交叉,但尺寸必须为100x100。谢谢大家! Graph API only*提供以下大小,使用类型参数指定图片大小: 正方形:50x50像素 小:50像素宽,高度可变 正常:100像素宽,高度可变 大:约200像素宽,高度可变 如果希望图像为100x100,则必须检索正常大小并自行裁剪,例如,如果使用php,请检查函数 *更新: 正如下面的评论所指出的,这个答案

我需要从facebook graph api获取100x100平方米的图片。图片必须像standart square 50x50图片一样交叉,但尺寸必须为100x100。谢谢大家!

Graph API only*提供以下大小,使用类型参数指定图片大小:

正方形:50x50像素

小:50像素宽,高度可变

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

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

如果希望图像为100x100,则必须检索正常大小并自行裁剪,例如,如果使用php,请检查函数

*更新:


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

Graph API仅提供以下大小*使用类型参数指定图片大小:

- (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];

}
正方形:50x50像素

小:50像素宽,高度可变

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

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

如果希望图像为100x100,则必须检索正常大小并自行裁剪,例如,如果使用php,请检查函数

*更新:

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

- (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为我们提供了一个小的 个人资料图片50x50

1首先,您必须从url下载图像:

例如加载图像

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内存管理编写的

url为我们提供了一个小的 个人资料图片50x50

1首先,您必须从url下载图像:

例如加载图像

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内存管理编写的,您也可以尝试以下操作:

不要忘记将“INSERTUIDHERE”替换为您试图获取映像的用户的UID。嵌入式ruby在这里工作得很好。例:…ook.com//pic

请注意,可以将尺寸更改为所需的任何尺寸,例如:50x50或500x500。它应该从照片的中心裁剪并调整大小。由于某些原因,它有时会变大或变小几个像素,但我认为这更多地与原始照片的尺寸有关。是的,第一个答案是这样的

这是我的傻瓜马克杯,100 x 100,使用上面的链接。我会提供更多,但由于我是一个n00b,所以阻止发布多个链接也是如此


100 x 100:

您也可以尝试以下方法:

不要忘记将“INSERTUIDHERE”替换为您试图获取映像的用户的UID。嵌入式ruby在这里工作得很好。例:…ook.com//pic

请注意,可以将尺寸更改为所需的任何尺寸,例如:50x50或500x500。它应该从照片的中心裁剪并调整大小。由于某些原因,它有时会变大或变小几个像素,但我认为这更多地与原始照片的尺寸有关。是的,第一个答案是这样的

这是我的傻瓜马克杯,100 x 100,使用上面的链接。我会提供更多,但由于我是一个n00b,所以阻止发布多个链接也是如此


100 x 100:

您可以获得任意尺寸的图片,但不限于这四个选项。请看@Jeremy的答案。@LukaRamishvili:是的,您不再局限于这4种尺码。然而,在最初的问题提出时,他们是唯一的选择,这个OP的答案是准确的。杰里米的回答是在2012年8月添加了更多选项后添加的,我相信现在是有效的。我明白了。谢谢你提醒我,我没有看日期。你可以得到你想要的任何尺寸的图片,你不限于这四个选项。请看@Jeremy的答案。@LukaRamishvili:是的,您不再局限于这4种尺码。然而,在最初的问题提出时,他们是唯一的选择,这个OP的答案是准确的。杰里米的回答是在2012年8月添加了更多选项后添加的,我相信现在是有效的。我明白了。谢谢你提醒我,我没看日期。