二维码系列(二)检测二维码

    xiaoxiao2021-12-14  24

    1、搭界面

    2、代码

    // // ViewController.swift // detectorQRCode // // Created by targetcloud on 2016/12/3. // Copyright © 2016年 targetcloud. All rights reserved. // import UIKit class ViewController: UIViewController { @IBOutlet weak var detectorImg: UIImageView! @IBOutlet weak var resultTV: UITextView! @IBAction func detect(_ sender: Any) { let image = detectorImg.image let imageCI = CIImage(image: image!) let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: [CIDetectorAccuracy: CIDetectorAccuracyHigh]) let features = detector?.features(in: imageCI!) var resultImage = image var resultMessage = [String]() for feature in features! { let qrFeature = feature as! CIQRCodeFeature resultMessage.append(qrFeature.messageString!) resultTV.text.append(qrFeature.messageString!+"\n") resultImage = drawFrame(resultImage!, feature: qrFeature,lineWidth:5) detectorImg.image = resultImage } let alertVC = UIAlertController(title: "结果", message: resultMessage.description, preferredStyle: UIAlertControllerStyle.alert) let action = UIAlertAction(title: "关闭", style: UIAlertActionStyle.default) { (action: UIAlertAction) in self.dismiss(animated: true, completion: nil) } alertVC.addAction(action) present(alertVC, animated: true, completion: nil) } func drawFrame(_ image: UIImage, feature: CIQRCodeFeature,lineWidth:CGFloat) -> UIImage { let size = image.size UIGraphicsBeginImageContext(size) image.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height)) let context = UIGraphicsGetCurrentContext() context?.scaleBy(x: 1, y: -1) context?.translateBy(x: 0, y: -size.height) let bounds = feature.bounds let path = UIBezierPath(rect: bounds) UIColor.red.setStroke() path.lineWidth = lineWidth path.stroke() let resultImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return resultImage! } }

    3、运行效果

    使用工具类检测出二维码见二维码系列(4)

    转载请注明原文地址: https://ju.6miu.com/read-972111.html

    最新回复(0)