zoukankan      html  css  js  c++  java
  • 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)
        }
    
  • 相关阅读:
    2018 北京区域赛H
    LeetCode 第 207 场周赛
    LeetCode 第 209 场周赛
    LeetCode 第 211 场周赛
    PAT 甲级真题题解(121-155)
    PAT 甲级真题题解(63-120)
    PAT 甲级真题题解(1-62)
    Codeforces 1108E2 Array and Segments (Hard version)(差分+思维)
    Codeforces 1108F MST Unification(最小生成树性质)
    Codeforces 1092C Prefixes and Suffixes(思维)
  • 原文地址:https://www.cnblogs.com/gchlcc/p/5638955.html
Copyright © 2011-2022 走看看