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)
        }
    
  • 相关阅读:
    Java程序员进阶:Java异常知识点梳理
    JVM内存模型(运行时数据区)
    史前最详细的:Java线程池核心流程解析
    10年大牛给Java 初学者的学习路线建议,如何学习 Java?
    异常处理(面试题)
    115道Java经典面试题(面中率高、全)
    Java异常处理(捕获异常)
    Java异常处理(观察常见异常)
    Java异常处理(异常基本概念)
    学习笔记:Java数组
  • 原文地址:https://www.cnblogs.com/gchlcc/p/5638955.html
Copyright © 2011-2022 走看看