Facebook graph api 如何从facebook graph api获取100x100平方米的图片?
我需要从facebook graph api获取100x100平方米的图片。图片必须像standart square 50x50图片一样交叉,但尺寸必须为100x100。谢谢大家! Graph API only*提供以下大小,使用类型参数指定图片大小: 正方形:50x50像素 小:50像素宽,高度可变 正常:100像素宽,高度可变 大:约200像素宽,高度可变 如果希望图像为100x100,则必须检索正常大小并自行裁剪,例如,如果使用php,请检查函数 *更新: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,请检查函数 *更新: 正如下面的评论所指出的,这个答案
正如下面的评论所指出的,这个答案在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月添加了更多选项后添加的,我相信现在是有效的。我明白了。谢谢你提醒我,我没看日期。