直接上代码
// 二维码识别
fileprivate func recoginzeQRCode(_ image: UIImage) -> String?
{
// 创建二维码探测器
//1.初始化扫描仪,设置设别类型和识别质量
let detector = CIDetector(ofType: CIDetectorTypeQRCode, context: nil, options: [CIDetectorAccuracy: CIDetectorAccuracyHigh])
let cgImage = CIImage(image: image)
//2.扫描获取的特征组
if let image = cgImage {
let features = detector?.features(in: image)
if let count = features?.count {
guard count > 0 else { return nil }
} else {
return nil
}
//3.获取扫描结果
let feature = features?.first as? CIQRCodeFeature
return feature?.messageString
} else {
UIApplication.dLog("图片无法转成CIImage")
return nil
}
}
// 二维码识别结果
fileprivate func recoginze(_ image: UIImage) {
DispatchQueue.global().async {
let recognizeResult = self.recoginzeQRCode(image)
if let count = recognizeResult?.characters.count {
let result = count > 0 ? recognizeResult : "无法识别"
DispatchQueue.main.async {
UIApplication.dLog(result)
if #available(iOS 10.0, *) {
UIApplication.shared.open(URL(string: result!)!, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(URL(string: result!)!)
}
}
}
}
}
简书博客地址
https://www.jianshu.com/u/3c7c13f3dc6b