[PHAsset使用PHImageManager时为UIImage返回nil值

问题描述 投票:1回答:1

任何想法,为什么在添加requestImageOption设置后,此“ thisImage”将返回nil?如果options设置为nil,则thisAsset返回一个值,但它是低分辨率图像,绝对不是原始高分辨率。我正在尝试从PHAsset(thisAsset)返回原始图像

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

        let manager = PHImageManager.default()
        let requestImageOption = PHImageRequestOptions()
        requestImageOption.deliveryMode = PHImageRequestOptionsDeliveryMode.highQualityFormat

        manager.requestImage(for: thisAsset, targetSize: PHImageManagerMaximumSize, contentMode: PHImageContentMode.default, options: requestImageOption, resultHandler: {(thisImage, _) in

            Object.tempImage = thisImage

            print("Picture metadata: \(thisAsset)")
            let creationDate = thisAsset.creationDate

            PhotoMeta.createDate = creationDate

            })
            //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: Object.tempImage!)
            }
    }
ios swift phasset
1个回答
1
投票

将requestOptions的isSynchronus设置为true以解决您的问题:

    let requestImageOption = PHImageRequestOptions()
    requestImageOption.deliveryMode = PHImageRequestOptionsDeliveryMode.highQualityFormat
    requestImageOption.isSynchronous = true

    manager.requestImage(for: thisAsset, targetSize: PHImageManagerMaximumSize, contentMode: PHImageContentMode.default, options: requestImageOption, resultHandler: {(thisImage, _) in

        //....
    }
© www.soinside.com 2019 - 2024. All rights reserved.