Как я могу захватить предварительное изображение во время сканирования qrcode с swift4, xcode10 - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь прочитать 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) на изображении предварительного просмотра

Любая помощь приветствуется, спасибо

...