【问题标题】:Unable to Scan QR from gallery image无法从图库图片中扫描 QR
【发布时间】:2020-07-06 16:19:45
【问题描述】:

我正在尝试制作一个 QR 码扫描仪,它会在单击按钮时从图库中获取图像并显示一条消息。

我的按钮功能是:-

@IBAction func gallaryBtnEventListener(_ sender: Any) {
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.photoLibrary) {
            pickerController.delegate = self
            pickerController.sourceType = UIImagePickerController.SourceType.photoLibrary
            pickerController.allowsEditing = true
            self.present(pickerController, animated: true, completion: nil)
        }
        
    }

这是 imagepickerCONtroller

private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        if let qrcodeImg = info[UIImagePickerController.InfoKey.originalImage.rawValue] as? UIImage {
              let detector:CIDetector=CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: [CIDetectorAccuracy:CIDetectorAccuracyHigh])!
              let ciImage:CIImage=CIImage(image:qrcodeImg)!
              var qrCodeLink=""
    
              let features=detector.features(in: ciImage)
              for feature in features as! [CIQRCodeFeature] {
                  qrCodeLink += feature.messageString!
              }
              
              if qrCodeLink=="" {
                  print("nothing")
              }else{
                  print("message: \(qrCodeLink)")
              }
          }
          else{
             print("Something went wrong")
          }
         self.dismiss(animated: true, completion: nil)
        }

当我运行此代码时,我可以成功地从图库中选择一张图片,但它什么也没打印。 现在我需要这方面的帮助。还有一件事,我没有添加任何 imageView。

【问题讨论】:

    标签: swift uiimagepickercontroller


    【解决方案1】:

    这是因为您为UIImagePickerControllerDelegate 方法imagePickerController(_:,didFinishPickingMediaWithInfo:) 添加了private 访问修饰符。删除方法前面的private 关键字,委托将开始正常工作。另外,不要复制/粘贴您正在使用旧版本的委托方法,这是较新的版本:

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let qrcodeImg = info[.originalImage] as? UIImage {
            //...
        }
    }
    
    

    【讨论】:

    • 什么也没发生。
    猜你喜欢
    • 2018-01-22
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2022-12-15
    相关资源
    最近更新 更多