Как вы можете получить изображение человека из адресной книги iPhone?Получить изображение человека из адресной книги iPhone
ответ
Вы можете сделать это так ....
NSData *imgData = (NSData *)ABPersonCopyImageData(person);
UIImage *img = [UIImage imageWithData:imgData];
где person
имеет тип ABRecordRef
. Теперь, когда CFData и NSData являются бесплатными мостами, вы можете просто набрать листинг CFData
в NSData
и получить изображение
Надеюсь, это поможет.
(NSData*)ABPersonCopyImageDataWithFormat([targetPeople objectAtIndex:index], kABPersonImageFormatThumbnail)
Это быстрее, так как оно возвращает миниатюру.
+1, потому что в дополнение к миниатюре может быть, что изображение контакта было обрезано, поэтому подход ChangUZ возвратит то же изображение, что показано в адресной книге. – Besi
Но этот метод доступен из iOS 4.1. – rowwingman
Слегка обновилась код:
UIImage *image = nil;
@try
{
CFDataRef cfImage = ABPersonCopyImageData(person);
// or CFDataRef cfImage = ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatThumbnail);
if (cfImage)
{
image = [UIImage imageWithData:(__bridge NSData*)cfImage];
CFRelease(cfImage);
}
}
@catch (NSException *exception)
{
//...
}
просто обратите внимание, что "imgaeWithData: imgData" в последней строке фрагмента кода следует читать "imageWithData: imgData". Я исправил его –
Обратите внимание, что это может быть не изображение, которое пользователи ожидают, так как это не обрезанная версия изображения. См. [Ответ ChangUZ] (http://stackoverflow.com/a/6953492/784318) – Besi
@Besi Но без упоминания какого-либо формата изображения выгодно, поскольку при заполнении изображений в ячейках табличного вида мы используем представление изображения в виде аксессуаров , потому что он автоматически изменяет размер изображения и устанавливает каждое изображение в уникальном формате (одинаковые размеры) :) –