Как получить данные / метаданные фотографии после выбора в PHPickerViewController?
В приложении, над которым я работаю, мне поручено предоставить пользователю фотографии с его устройства с помощью PHPickerViewController
.
После выбора мне понадобится доступ к:
- Исходные данные изображения
- Имя файла изображения
- Дата создания образа
Это просто сделать с помощью PHAsset
если бы у меня был полный доступ к фотографиям пользователя - я мог бы использовать PHPickerViewController
значение результата, которое включает идентификаторы фотографий для запроса PhotoKit
для PHAssets
. Однако нет никакой гарантии, что у меня есть полный доступ. Кроме того, если пользователь не предоставил доступ или ограниченный доступ, и ограниченный выбор не включает фотографии, выбранные вPHPickerViewController
, Я не смогу их запросить. (Я пробовал это, и, как и ожидалось, результат запроса ноль, что имеет смысл).
В UIImage
которые я могу получить, это только прокси исходных данных изображения (отсутствуют такие вещи, как данные exif и т. д.), поэтому этого недостаточно для пользовательского случая, который есть в моем приложении. Если предположить, что для данных существует поставщик элементов, мне все равно понадобится информация, такая как имя файла и дата создания.
Итак, есть ли способ получить эту информацию?
1 ответ
UIImage, который я могу получить, является только прокси-сервером исходных данных изображения (отсутствуют такие вещи, как данные exif и т.д.), поэтому этого недостаточно для пользовательского случая, когда мое приложение имеет
Вернитесь к NSItemProvider и попросите у него представление данных изображения. Теперь извлеките метаданные обычным способом.
// prov is the item provider
prov.loadDataRepresentation(forTypeIdentifier: UTType.image.identifier) { data, err in
if let data = data {
let src = CGImageSourceCreateWithData(data as CFData, nil)!
let d = CGImageSourceCopyPropertiesAtIndex(src,0,nil) as! [AnyHashable:Any]
print("metadata", d)
}
}