我正在尝试从相机预览中读取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
)
任何帮助表示感谢,谢谢