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