Как получить доступ к метаданным для UIImage через PHAsset с помощью Swift

Я пытаюсь получить этот рабочий код, который извлекает UIImage через selectedImage из ImagePicker и сохраняет его с помощью метода savePhoto, чтобы ТАКЖЕ получить мне метаданные UImage:

Исходный код:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]){

    if let selectedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {

    //Successfully got the image, now upload it

        //Get a reference to the camera view controller and call the savePhoto method
        let cameraVC = self.selectedViewController as? CameraViewController

        if let cameraVC = cameraVC {
            cameraVC.savePhoto(image: selectedImage)
        }

//Dismiss the picker
picker.dismiss(animated: true, completion: nil)
}
}

Это то, что я пробовал, но thisAsset всегда возвращает nil, поэтому он пропускает практически весь метод.

Код, который я пробовал:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]){

var arrImageIdentifiers = String()


    if let thisAsset:PHAsset = info[UIImagePickerController.InfoKey.phAsset] as? PHAsset {
          arrImageIdentifiers.append(thisAsset.localIdentifier)

        //Get a reference to the camera view controller and call the savePhoto method
        let cameraVC = self.selectedViewController as? CameraViewController

        let manager = PHImageManager.default()

        manager.requestImage(for: thisAsset, targetSize: CGSize(width: 300.0, height: 300.0), contentMode: .aspectFit, options: nil, resultHandler: {(thisImage, _) in




        if let cameraVC = cameraVC {
            cameraVC.savePhoto(image: thisImage!)
        }
            })
        }
    self.dismiss(animated: true, completion: nil)
  }}

Как проще всего получить метаданные фотографии (дату создания, местоположение и т. Д.) Из исходного кода, приведенного выше?


person akash23a    schedule 17.10.2019    source источник


Ответы (1)


Изображение, которое вы получаете из своего первого кода, не включает метаданные. Ваш второй код ближе к правильному; вам нужно вернуться к PHAsset и забрать метаданные из библиотеки фотографий.

Это то, что я пробовал, но thisAsset всегда возвращается ноль

Потому что вы забыли получить авторизацию пользователя для библиотеки фотографий. Без этого вы не сможете получить доступ к PHAsset.

person matt    schedule 17.10.2019