Swift开发小技巧--识别选中照片中的二维码

识别选中照片中的二维码

  • 点击相册按钮,打开用户相册
    @IBAction func photoBtnClick(sender: AnyObject) {
        // 打开相册
        // 1.判断是否能够打开相册
        /*
        case PhotoLibrary  相册
        case Camera 相机
        case SavedPhotosAlbum 图片库
        */
        if !UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary)
        {
            return
        }

        // 2.创建相册控制器
        let imagePickerVC = UIImagePickerController()

        imagePickerVC.delegate = self // 代理方法中识别照片中的二维码
        // 3.弹出相册控制器
        presentViewController(imagePickerVC, animated: true, completion: nil)

    }
  • 打开相册时,创建了相册控制器,设置相册控制器的代理,代理中的方法实现识别二维码.需要同时实现两个代理UINavigationControllerDelegate, UIImagePickerControllerDelegate
    // 过时的方法
    func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {

    }
    // 未过时的方法
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

        // 1.取出选中的图片
        guard let image = info[UIImagePickerControllerOriginalImage] as? UIImage else
        {
            return
        }

        guard let ciImage = CIImage(image: image) else
        {
            return
        }

        // 2.从选中的图片中读取二维码数据
        // 2.1创建一个探测器
        // CIDetectorTypeFace -- 探测器还可以搞人脸识别
        let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: [CIDetectorAccuracy: CIDetectorAccuracyLow])
        // 2.2利用探测器探测数据
        let results = detector.featuresInImage(ciImage)
        // 2.3取出探测到的数据
        for result in results
        {
            ChaosLog((result as! CIQRCodeFeature).messageString)
        }

        // 注意: 如果实现了该方法, 当选中一张图片时系统就不会自动关闭相册控制器
        picker.dismissViewControllerAnimated(true, completion: nil)
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值