初始化scanManager
- (void)setupScanManager {
self.scanManager = [QRCodeScanManager sharedManager];
NSArray *arr = @[AVMetadataObjectTypeQRCode, AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code];
[_scanManager setupSessionPreset:AVCaptureSessionPreset1920x1080 metadataObjectTypes:arr currentController:self];
__weak __typeof(self)weakSelf = self;
//光扫描结果回调
[_scanManager scanResult:^(NSArray *metadataObjects) {
if (metadataObjects != nil && metadataObjects.count > 0) {
[weakSelf.scanManager playSoundName:@"sound.caf"];
//obj 为扫描结果
AVMetadataMachineReadableCodeObject *obj = metadataObjects[0];
NSString *url = [obj stringValue];
NSLog(@"---url = :%@", url);
} else {
NSLog(@"暂未识别出扫描的二维码");
}
}];
//光纤变化回调
[_scanManager brightnessChange:^(CGFloat brightness) {
[weakSelf.scanView lightBtnChangeWithBrightnessValue:brightness];
}];
}
从相册识别二维码:
//借助第三方相册
- (void)albumBtnClick {
TZImagePickerController *pickerController = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self];
__weak __typeof(self)weakSelf = self;
[pickerController setDidFinishPickingPhotosHandle:^(NSArray *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
UIImage *image = photos[0];
// CIDetector(CIDetector可用于人脸识别)进行图片解析,从而使我们可以便捷的从相册中获取到二维码
// 声明一个 CIDetector,并设定识别类型 CIDetectorTypeQRCode
// 识别精度
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];
//取得识别结果
NSArray *features = [detector featuresInImage:[CIImage imageWithCGImage:image.CGImage]];
NSString *resultStr;
if (features.count == 0) {
NSLog(@"暂未识别出二维码");
} else {
for (int index = 0; index < [features count]; index++) {
CIQRCodeFeature *feature = [features objectAtIndex:index];
resultStr = feature.messageString;
}
NSLog(@"---url:%@", resultStr);
}
}];
[self presentViewController:pickerController animated:YES completion:nil];
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU。
注:相关教程知识阅读请移步到IOS开发频道。










