我如何在使用swift4,xcode10进行QR码扫描期间捕获预览图像

时间:2019-04-24 03:45:49

标签: ios swift qr-code

我正在尝试从相机预览中读取QR码(swift4,xcode10) 并创建一个新页面(在预览图像上绘制QR码矩形区域)

我发现QrcodeReader.swift并成功建立了,但是我无法获得预览图像,只是QR码字符串(警报消息)

所以,我用QR码结果字符串创建了一个新的视图控制器,但是我无法绘制预览图像

1. qrcodeReader: NSObject, AVCaptureMetadataOutputObjectsDelegate
public func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
    sessionQueue.async { [weak self] in
      guard let weakSelf = self else { return }

        for current in metadataObjects {
        if let _readableCodeObject = current as? AVMetadataMachineReadableCodeObject {
          if _readableCodeObject.stringValue != nil {
            if weakSelf.metadataObjectTypes.contains(_readableCodeObject.type) {
              guard weakSelf.session.isRunning, let sVal = _readableCodeObject.stringValue else { return }

              if weakSelf.stopScanningWhenCodeIsFound {
                weakSelf.session.stopRunning()

                DispatchQueue.main.async {
                  weakSelf.lifeCycleDelegate?.readerDidStopScanning()
                }
              }

                let barcodeFilter = CIFilter(name: "CIQRCodeGenerator")
                barcodeFilter?.setValue(_readableCodeObject.stringValue!.data(using: .ascii), forKey: "inputMessage")

                let image = UIImage(ciImage: (barcodeFilter?.outputImage)!)

                let scannedResult = QRCodeReaderResult(value: sVal, metadataType:_readableCodeObject.type.rawValue, resultPoints: point ,resultImg: image)
}



2. ViewController: UIViewController, QRCodeReaderViewControllerDelegate
  func reader(_ reader: QRCodeReaderViewController, didScanResult result: QRCodeReaderResult) {
    reader.stopScanning()
    guard let uvc = self.storyboard?.instantiateViewController(withIdentifier: "resultVC") as? ResultViewController else {
        return
    }

    uvc.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
    uvc.paramTest = result.value
    uvc.paramImg = result.resultImg

    self.present(uvc, animated: true, completion: nil)
}


3. ResultViewController: UIViewController{
    override func viewDidLoad() {

        self.resultText.text = paramTest
        self.resultImg.image = paramImg

    }
}

我想在预览图像上绘制QR码矩形区域(我想QR码区域的角位置:_readableCodeObject.corners

任何帮助表示感谢,谢谢

0 个答案:

没有答案