1

Facebook グラフ API から 100x100 の正方形の画像を取得する必要があります。画像は、標準の正方形の「50x50」画像のようにトリミングする必要がありますが、サイズは 100x100 にする必要があります。ありがとうございました!

4

3 に答える 3

3

Graph API のみ* は、次のサイズを提供します (type 引数で画像サイズを指定します)。

  • 正方形: 50x50 ピクセル

  • small : 幅 50 ピクセル、高さ可変

  • normal : 幅 100 ピクセル、高さ可変

  • : 幅約 200 ピクセル、高さ可変

画像を 100x100 にしたい場合は、「通常の」サイズを取得して自分でトリミングする必要があります。たとえば、php を使用している場合は、imagecopyresampled関数を確認してください。

*更新

以下のコメントで指摘されているように、この回答は 2012 年 5 月には正しかったのですが、最近の回答で説明されているように、graph.facebook.com UID/ /picture?width= N&height=Nを使用してさまざまなサイズを取得するオプションもあります。ジェレミー。

于 2012-05-17T15:48:56.267 に答える
1

これを試すこともできます:

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

「INSERTUIDHERE」を、画像を取得しようとしているユーザーの UID に置き換えることを忘れないでください。埋め込みルビーはここでうまく機能します。例: ...ook.com/<%= @problem.user.uid %>/pic...

サイズは自由に変更できます (例: 50x50 または 500x500)。写真の中心からトリミングしてサイズを変更する必要があります。(何らかの理由で)数ピクセル大きくなったり小さくなったりすることがありますが、それは元の写真の寸法に関係していると思います. SOの最初の答えよ!

上記のリンクを使用して、100 x 100 の私のばかげたマグカップを次に示します。もっと提供したいのですが、私はn00bであるため、SOは複数のリンクを投稿することを妨げています.

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

于 2014-03-12T20:33:46.523 に答える
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は小さなプロフィール画像 ( 50x50 ) を提供します

1) まず、URL から画像をダウンロードする必要があります。

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 メモリ管理を使用して記述されています

于 2012-08-01T13:39:49.233 に答える