2010-07-10 8 views
9

La estructura AddressBook proporciona ABPersonCopyImageData para obtener la imagen de contacto para cada entrada de la libreta de direcciones. Esto es excelente para los datos de imagen, pero el usuario también dimensiona y recorta la imagen para enmarcarla. Cuando obtengo los datos de la imagen, obtengo la imagen completa, y no la imagen recortada. ¿Cómo obtengo el marco que el usuario utilizó para recortar la imagen (o en lugar de eso, cómo puedo acceder a la imagen/datos recortados)?¿Cómo obtengo el marco de recorte de los datos de la imagen de la libreta de direcciones?

Respuesta

1

Hasta cierto punto, es un error en iOS4. Anteriormente, la API de la libreta de direcciones devolvía los datos recortados, y en iOS4 devuelve los datos de la imagen completa. Algunas personas quieren una, algunas personas quieren la otra. Tiendo a pensar que toda la información de la imagen es inútil sin el marco de recorte, así que con suerte eso se arreglará ...

0

Creo que es imposible obtener la cosecha correcta. La información de cultivo se almacena dentro de la base de datos sqlite que administra el marco de la libreta de direcciones. Pero la aplicación del cliente no puede leer la base de datos sqlite de otra aplicación, de acuerdo con la estructura de la zona de pruebas.

+0

Los marcos no son aplicaciones. "Sandboxing" es en gran medida solo proceso/basado en UID. Sin embargo, resulta que /var/mobile/Library/AddressBook/AddressBookImages.sqlitedb es legible, por lo que debería ser posible extraer el recorte, incluso si se considera "privado". –

+0

Si se puede consultar la base de datos sqlite, entonces se pueden resolver tantas cosas. Algo así como etiquetas personalizadas, el problema de recorte de cultivo aquí, y el problema de tienda (ABStore) antes de iOS SDK 4.0, ... etc. Mi compañero lo había intentado y dijo que no podía ejecutar comandos en la base de datos sqlite que administraba el marco de la libreta de direcciones. Quizás puedas intentarlo de nuevo. – AechoLiu

6

iOS 4.1 agrega un nuevo método: ABPersonCopyImageDataWithFormat en ABPerson.

lo estoy usando como esto:

NSData *imageData = [(NSData *)ABPersonCopyImageDataWithFormat(recordRef, kABPersonImageFormatThumbnail) autorelease]; 

Los formatos permitidos son:

kABPersonImageFormatThumbnail 
kABPersonImageFormatOriginalSize 

Esto le permite obtener la imagen original o la imagen recortada (miniatura).

Cuestiones relacionadas