Я пытаюсь реализовать небольшой инструмент для управления фотографиями на iPhone. В настоящее время я использую как симулятор, так и iPhone 7 с iOS 13.5.1.
Я заметил, что когда я копирую фотографию из Ma c в симулятор или через iCloud к устройству, размеры после выбора его в моем приложении сильно отличаются от того, что приложение MacOS Photos сообщает мне, что они должны быть.
Пример:
Панорама в MacOS Photos с размерами 14204 × 3628 пикселей экспортируется как исходная версия. Finder показывает те же размеры. Файл изображения скопирован в симулятор с помощью перетаскивания и открыт моим приложением с UIImagePickerController
: 2048 x 523 пикселей. Панорама скопирована на устройство через iCloud и открыта моим приложением с помощью UIImagePickerController
: 4096 x 1046
. Я действительно хотел бы открыть изображение с его реальными размерами, как показано в Finder и Photos. В настоящее время я использую следующий код:
@IBAction func btnAddProjectPressed(_ sender: Any) {
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary
imagePicker.allowsEditing = false
present(imagePicker, animated: true, completion: nil)
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
self.dismiss(animated: true, completion: { () -> Void in
})
pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage
imageView.image = image
}
UPDATE : Мне удалось получить немасштабированное изображение, используя значение .phAsset
из словаря info
, загрузив «реальное» изображение с помощью PHImageManager
. Однако это выводит сообщение
Ошибка, возвращенная демоном: Error Domain = com.apple.accounts Code = 7 "(null)"
Эта проблема описана в здесь много вопросов ( например, этот ), и я не мог найти решение. Даже образец проекта Apple выводит эту ошибку и не показывает никаких фотографий или альбомов.
Однако объединение UIImagePickerController
и PHImageManager
, похоже, сводит это к предупреждению, так что я действительно получаю полную размер изображения.