如何从UIImagePickerController

时间:2017-07-07 18:16:02

标签: ios uiimage uiimagepickercontroller photos

我尝试检索PHAsset,但是iOS 8中不推荐使用PHAsset.fetchAssets(withALAssetURLs:options :),那么如何才能正确检索PHAsset?

4 个答案:

答案 0 :(得分:11)

我遇到了同样的问题,首先检查权限并请求访问权限:

inputModule <- function(input, output, session){
  reactive(
    list(
      text1 = input$text1,
      text2 = input$text2
    )
  )
}

outputModule <- function(input, output, session, ImProxy){
  output$txt <- renderPrint({
    paste(ImProxy()$text1, "&", ImProxy()$text2)
  })
}

shinyApp(ui, server)

只需将其连接到UIImagePickerController的任何触发器即可。委托调用现在应该在userInfo中包含PHAsset。

let status = PHPhotoLibrary.authorizationStatus()

if status == .notDetermined  {
    PHPhotoLibrary.requestAuthorization({status in

    })
}

答案 1 :(得分:1)

除非用户授权,否则PHAsset不会出现在didFinishPickingMediaWithInfo: info结果中,这对我来说只是通过展示选择器就不会发生。我在协调器init()中添加了它:

            let status = PHPhotoLibrary.authorizationStatus()

            if status == .notDetermined  {
                PHPhotoLibrary.requestAuthorization({status in

                })
            }

答案 2 :(得分:0)

我不确定你想要什么。

您是否尝试定位iOS 8?

这是我获取照片的方式,它适用于 iOS(8.0及更高版本),macOS(10.11及更高版本),tvOS(10.0及更高版本)。 代码被评论可能会令人困惑

  1. 第一个功能设置了获取照片的选项
  2. 第二个函数实际上会获取它们

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    

    }

  3. 根据OP的澄清进行编辑

    您需要设置委托 UIImagePickerControllerDelegate

    然后实现以下功能

    var image : UIImage = info[UIImagePickerControllerEditedImage] as! UIImage
    

    在所述方法中,得到如下图像:

    {{1}}

答案 3 :(得分:0)

这是我的解决方法:

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

        if #available(iOS 11.0, *) {
               let asset = info[UIImagePickerControllerPHAsset]

        } else {
               if let assetURL = info[UIImagePickerControllerReferenceURL] as? URL {
               let result = PHAsset.fetchAssets(withALAssetURLs: [assetURL], options: nil)
               let asset = result.firstObject
               }
       }
}