2010-07-10 81 views
9

AddressBook框架提供了用於獲取每個地址簿條目的聯繫人圖像的ABPersonCopyImageData。這對圖像數據非常有用,但用戶還可以根據圖像的大小和圖像裁剪圖像。當我得到圖像數據時,我得到完整的圖像,而不是裁剪的圖像。我如何獲得用戶用來裁剪圖像的框架(或代替那個,我怎樣才能訪問裁剪的圖像/數據)?如何獲取地址簿圖像數據的裁剪框?

回答

1

在某種程度上,這是iOS4中的一個錯誤。以前,地址簿API會返回裁剪數據,並且在iOS4中會返回整個圖像數據。有些人想要一個,有些人需要另一個。我傾向於認爲整個圖像數據沒有裁剪框架是沒用的,所以希望這將得到修復...

0

我認爲這是不可能得到作物。 裁剪矩形信息存儲在由地址簿框架管理的sqlite數據庫中。 但根據沙盒結構,客戶端的應用程序無法讀取其他應用程序的sqlite數據庫。

+0

框架不是應用程序。 「沙盒」主要是基於流程/基於UID的。但是,事實證明/var/mobile/Library/AddressBook/AddressBookImages.sqlitedb是可讀的,所以應該可以得到裁剪,即使它可能被認爲是「私人」。 – 2010-08-30 15:16:42

+0

如果可以查詢sqlite數據庫,那麼可以解決很多事情。像自定義標籤,裁剪矩形問題,以及iOS SDK 4.0之前的商店(ABStore)問題等等。我的合作伙伴曾嘗試過,他說它不能在由地址簿框架管理的sqlite數據庫上執行命令。也許你可以再試一次。 – AechoLiu 2010-08-30 22:53:46

6

iOS 4.1增加了一個新的方法:ABPersonCopyImageDataWithFormat in ABPerson

我使用的是這樣的:

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

允許的格式是:

kABPersonImageFormatThumbnail 
kABPersonImageFormatOriginalSize 

這可以讓你獲得原始圖像或裁剪後的圖像(縮略圖)。