2012-08-10 11 views
24

¿Cómo puedo obtener una foto de Facebook con el conjunto de usuarios de la vista de selección (si usan una imagen grande)? Si utilizo type = "large" o "normal" o "small" en el gráfico de ruta, obtengo una imagen pero no es cuadrada y no es una vista de selección del conjunto de usuarios. Entonces, ¿cómo puedo obtener una foto con el tipo cuadrado y su vista del conjunto de usuariosGraph API get photo square (100x100)

+0

Para 'picture' nada tiene 100x100 cuadrado, solo un pequeño 50x50 ...' https://developers.facebook.com/docs/graph-api/reference/v2.0/user/picture' algunas imágenes no son cuadradas y se devolverán así. – vsync

Respuesta

3

Intente utilizar el tipo square. En la siguiente manera:

http://graph.facebook.com/[user_id]/picture?type=square

El tamaño cuadrado se limita a 50x50. Si desea un tamaño grande, tendrá que agrandar la versión cuadrada o recortar la versión grande.

Si no le importa recuperar y recortar una imagen usted mismo, siga mi código tutorial here para hacer exactamente eso. Le permitirá generar imágenes cuadradas de más de 50 px.

48

Usted puede obtener una imagen cuadrada de dimensiones mayores que la normal para type=square (que será sólo 50x50 píxeles de tamaño) mediante la solicitud de una foto con width y height parámetros establecidos.

Ver https://developers.facebook.com/docs/reference/api/user/, “foto” de conexión, cita:

“Además, puede especificar los parámetros de anchura y altura de URL para solicitar una imagen de un tamaño específico. Esto devolverá una imagen de perfil disponible más cercana al tamaño solicitado y la relación de aspecto solicitada. [...] si el ancho = altura, siempre vamos a devolver una imagen cuadrada “

Ejemplo:

https://graph.facebook.com/4/picture?type=square - del Sr. Zuckerberg‘ normal’foto de perfil cuadrado, tamaño 50x50

https://graph.facebook.com/4/picture?width=100&height=100 - 100x100 píxeles, coincidencia perfecta para el tamaño solicitado

https://graph.facebook.com/4/picture?width=150&height=150 - pidiendo 150x150, obteniendo 156x156 en su lugar.

Si puede vivir quizás algunas veces obteniendo imágenes que podrían ser un poco más grandes (o más pequeñas) que el tamaño solicitado, debería estar bien.

De lo contrario, tomará algunas pruebas para tratar de determinar si hay ciertos tamaños de imagen cuadrados que Facebook siempre tendrá "en stock" y entregará las coincidencias exactas, o si puede diferir para cada usuario según la imagen ellos cargaron

+0

Si el avatar es la imagen grande y el usuario mueve la imagen para establecer la imagen en el puerto de visualización, obtiene un archivo incorrecto (retorno de imagen que no tiene el tamaño deseado o a veces No es una imagen en el puerto de visualización del usuario). ¿Cómo puedo manejar este caso? –

+1

@HuyTran https://graph.facebook.com/zuck/picture?type=square ** ** devuelve una imagen cuadrada en el puerto de visualización del conjunto de usuarios. – borisdiakur

+2

@Lego: con esa ruta puedo obtener una imagen en el puerto de visualización y es solo tamaño 50x50. Pero quiero tamaño 100x100, con el usuario que carga una imagen grande y no mueve la imagen (en miniatura de edición) -> el resultado de la ruta 'graph.facebook.com/zuck/picture?idth = 100 & height = 100' obtendrá exactamente la imagen con el tamaño que quiero, en caso de que el usuario mueva la imagen -> el resultado de la imagen tiene un tamaño de 50x50. No sé lo que está pasando? –

1

Obtén la foto preguntando por el user's profile data using FQL. En tu caso, no deberías necesitar ningún token de acceso. Hay una columna llamada pic_crop que es un objeto que contiene el URI que necesita:

La URL para el mayor tamaño de imagen de perfil cuadrado para el objeto que se consulta. width, height: las dimensiones en píxeles de esta imagen. left, top, right, bottom: las coordenadas de píxeles del usuario seleccionado cultivo para esta imagen de perfil.

Utilice Graph API Explorer para probar su consulta.


actualización: Desde el Facebook Query Language (FQL) Referencia:

Version 2.0 de la API de la plataforma Facebook es la última versión en la que FQL estará disponible. Las versiones posteriores a 2.0 no admitirán FQL. Migre sus aplicaciones para usar Graph API en lugar de FQL. Consulte nuestra changelog para obtener información actualizada de la versión.

+1

Para futuros lectores: FQL va a estar en desuso – Raptor

12
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{ @"fields" : @"id,name,picture.width(100).height(100)"}] 
     startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { 
      if (!error) { 
      } 

en lugar de 100 se puede poner 200, 300 cifrar la respuesta y obtener con la clave

+0

Esta opción es mejor para mí –

+0

Puede consultar esta publicación y ayudarme http://stackoverflow.com/questions/37135893/high-resolution-images-from-facebook – Jecky

2

Esto funcionó para mí. Compruebe la siguiente consulta, NSString * graphPath = [NSString stringWithFormat:@"%@?fields=photos.fields(id,link,source)", albumID];