2010-07-10 3 views
9

Il framework AddressBook fornisce ABPersonCopyImageData per ottenere l'immagine del contatto per ogni voce della rubrica. Questo è ottimo per i dati dell'immagine, ma l'utente dimensiona e ritaglia l'immagine per scopi di definizione. Quando ottengo i dati dell'immagine, ottengo l'immagine completa e non l'immagine ritagliata. Come ottengo il frame utilizzato dall'utente per ritagliare l'immagine (o al posto di questo, come posso accedere all'immagine/ai dati ritagliati)?Come si ottiene la cornice di ritaglio dei dati dell'immagine della rubrica?

risposta

1

In parte, è un bug in iOS4. In precedenza, l'API della rubrica indirizzi restituiva i dati ritagliati e in iOS4 restituisce i dati dell'intera immagine. Alcune persone vogliono una, alcune persone vogliono l'altra. Tendo a pensare che l'intera immagine sia inutile senza il frame di ritaglio, quindi spero che venga sistemata ...

0

Penso che sia impossibile ottenere il raccolto rect. Le informazioni sul raccolto sono archiviate nel database sqlite gestito dal framework della rubrica. Ma l'applicazione del client non può leggere il database sqlite di un'altra applicazione, in base alla struttura sandbox.

+0

I quadri non sono app. "Sandboxing" è in gran parte solo processo/UID. Tuttavia, risulta che /var/mobile/Library/AddressBook/AddressBookImages.sqlitedb è leggibile, quindi dovrebbe essere possibile estrarre il crop rect, anche se potrebbe essere considerato "privato". –

+0

Se è possibile interrogare il database SQLite, è possibile risolvere così tante cose. Qualcosa come etichette personalizzate, il problema del rect crop qui, e il problema del negozio (ABStore) prima di iOS SDK 4.0, ... ecc. Il mio compagno aveva provato e disse che non poteva eseguire comandi sul database sqlite gestito dal framework della rubrica. Forse puoi riprovare. – AechoLiu

6

iOS 4.1 aggiunge un nuovo metodo: ABPersonCopyImageDataWithFormat in ABPerson.

sto usando in questo modo:

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

I formati ammessi sono:

kABPersonImageFormatThumbnail 
kABPersonImageFormatOriginalSize 

Questo consente di ottenere l'immagine originale o l'immagine ritagliata (miniature).