it-swarm.com.de

So erhalten Sie das größere Profilbild einer Facebook-Seite

Ich erhalte ein Bild von Facebook über die URL: http://external.ak.fbcdn.net/safe_image.php?d=d282e1e7c86c9270232f97ddc737df39&w=90&h=90&url=http%3A%2F%2Fi52.tinypic.com%2F%2Fixlq .jpg

Jetzt möchte ich eine größere Version wie 200 mal 200. Gibt es eine URL dafür? Wenn nicht, wie kann ich dieses Bild in eine größere Größe konvertieren?

18
PJR

Wenn Sie das Profilbild eines Benutzers oder einer Seite erfassen möchten, lautet das Format für das Bild in Symbolgröße im Allgemeinen:

http://graph.facebook.com/[page id/profile id]/picture

und für das große bild:

http://graph.facebook.com/[page id/profile id]/picture?type=large

EDITZu beachtende Punkte: Wenn das auf den Facebook-Servern gespeicherte Bild kleiner als 200 * 200 ist, erhalten Sie das Bild in der höchsten verfügbaren Auflösung, zB: 128 * 160. Entweder können Sie die Größe mithilfe der Gd-Bibliothek ändern.

UND EINE ANDERE SACHE

Facebook unterstützt 200 * 600px als höchste Auflösung für das Profilbild. Durch Beibehalten des Seitenverhältnisses wird die Größe eines Bildes so geändert, dass es in diese Abmessungen passt.

* UPDATE am 19. Februar 2017 *

Wir müssen diese neue URL-Formation verwenden, um ein gewünschtes Profilbild zu erhalten.

http://graph.facebook.com/{profile_id}/picture?width={number‌​}&height={number}

[Vielen Dank https://stackoverflow.com/users/2829128/vay]

52
Sujit Agarwal

Wenn Sie ein größeres Bild erhalten möchten, können Sie einfach die gewünschte Höhe und Breite wie folgt einstellen:

http://graph.facebook.com/[page id/profile id]/picture?width=[number]&height=[number]

Weitere Infos und Beispiele hier: Bilder - Facebook Entwickler

23

das wird auch funktionieren

bildtyp (groß)

beispiel

 if ([FBSDKAccessToken currentAccessToken]) {
    [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"picture.type(large),name, email"}]
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
         if (!error) {
             NSLog(@"fetched user:%@", result);
             NSMutableDictionary *data=[[NSMutableDictionary alloc]init];
             data=result;


             fbId.text=[data valueForKey:@"id"];
             userName.text=[data valueForKey:@"name"];
             _emailFB.text=[data valueForKey:@"email"];



             NSDictionary *dictionary = (NSDictionary *)result;

             NSDictionary *data3 = [dictionary objectForKey:@"picture"];
             NSDictionary *data2 = [data3 objectForKey:@"data"];
             NSString *photoUrl = (NSString *)[data2 objectForKey:@"url"];

             NSLog(@"Photo : %@",photoUrl);


         }
     }];
}

}

6
Subhojit Mandal

JA, es gibt eine Möglichkeit, das ursprüngliche (meist größere) Profilbild einer Facebook-Seite zu erhalten.

Eigentlich ist die Antwort schon in der Frage. Die ursprüngliche Bild-URL ist bereits in die URL save_image eingebettet. In Ihrem Fall ist es "url = http% 3A% 2F% 2Fi52.tinypic.com% 2F2q0ixzl.jpg", was " http://i52.tinypic.com/2q0ixzl.jpg " bedeutet.

In meinem Fall ist die Seite für London

https://www.facebook.com/pages/London-United-Kingdom/106078429431815?fref=ts

Ich kann leicht seine FB-Objekt-ID durch Suchbegriff London erhalten. Ich habe versucht, Breite und Höhe Parameter zu verwenden. Sie arbeiten mit Benutzerprofilbildern oder vom Benutzer freigegebenen Bildern, können jedoch nicht mit Profilbildern für öffentliche Seiten arbeiten.

https://graph.facebook.com/106078429431815/picture?width=300&height=300  // can’t work

Das größte Bild bekomme ich, wenn ich der URL folge, die nur 180x77 ist

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

Aber ich kann die safe_image.php-URL mit fb graph api erhalten, und die ursprüngliche Bild-URL befindet sich auch im URL-Abschnitt der Parameter

"url": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQCrtKykRotXBuaS&w=180&h=540&url=http%3A%2F%2Fupload.wikimedia.org%2Fwikipedia%2Fcommons%2Fthumb%2Farchive%2F2%2F21%2F20141005220235%2521City_of_London_skyline_at_dusk.jpg%2F720px-City_of_London_skyline_at_dusk.jpg&fallback=hub_city&prefix=d"

Hier ist Code, den ich verwendet habe.

[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"/%@/picture?redirect=false&type=large",[firstCityPage objectForKey:@"id"]]
                    completionHandler:^(
                                        FBRequestConnection *connection,
                                        id result,
                                        NSError *error
                                        ) {

                        NSString *profileImgUrl = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=large", [firstCityPage objectForKey:@"id"]];

                        if (error==nil) {
                            NSString *fbSaveImgUrl = [[(NSDictionary*)result objectForKey:@"data"] objectForKey:@"url"];

                            NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:[NSURL URLWithString:fbSaveImgUrl]
                                                                        resolvingAgainstBaseURL:NO];

                            for (NSURLQueryItem *queryItem in urlComponents.queryItems) {
                                if ([queryItem.name isEqualToString:@"url"]) {
                                    profileImgUrl = queryItem.value;
                                    break;
                                }
                            }

                        } else {
                            NSLog(@"%@",[error description]);
                        }

                        NSLog(@"url: %@", profileImgUrl);

                        ...
                    }];

ABER es gibt Risiken.

  1. Keine Garantie, dass die externe Bild-URL validiert wird.

  2. Facebook kann die explizite externe URL in der safe_image-URL entfernen oder die safe_image-URL künftig vor dem Entwickler verbergen.

Benutzung auf eigenes Risiko.

0
River2202