Платформа AddressBook предоставляет ABPersonCopyImageData для получения изображения контакта для каждой записи адресной книги. Это отлично подходит для данных изображения, но пользователь также масштабирует и обрезает изображение для кадрирования. Когда я получаю данные изображения, я получаю полное изображение, а не обрезанное изображение. Как мне получить кадр, который пользователь использовал для обрезки изображения (или вместо этого, как получить доступ к обрезанному изображению / данным)?
Как получить рамку обрезки данных изображения адресной книги?
Ответы:
iOS 4.1 добавляет новый метод: ABPersonCopyImageDataWithFormat
в ABPerson
.
Я использую это так:
NSData *imageData = [(NSData *)ABPersonCopyImageDataWithFormat(recordRef, kABPersonImageFormatThumbnail) autorelease];
Допустимые форматы:
kABPersonImageFormatThumbnail
kABPersonImageFormatOriginalSize
Это позволяет получить исходное изображение или обрезанное изображение (миниатюру).
В какой-то степени это ошибка iOS4. Раньше API адресной книги возвращал обрезанные данные, а в iOS4 он возвращал данные всего изображения. Некоторые люди хотят одного, некоторые - другого. Я склонен думать, что все данные изображения бесполезны без рамки обрезки, так что надеюсь, что это будет исправлено ...
Я считаю, что получить прямоугольный урожай невозможно. Информация о кадре хранится в базе данных sqlite, управляемой фреймворком адресной книги. Но клиентское приложение не может читать базу данных sqlite другого приложения в соответствии со структурой песочницы.