- (IBAction)reconizerPictureClick:(UIButton *)sender {
self.detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self.navigationController presentViewController:picker animated:YES completion:nil];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
[picker dismissViewControllerAnimated:YES completion:nil];
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
if (!image) {
image = [info objectForKey:UIImagePickerControllerOriginalImage];
}
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *superImage = [CIImage imageWithCGImage:image.CGImage];
CIFilter *lighten = [CIFilter filterWithName:@"CIColorControls"];
[lighten setValue:superImage forKey:kCIInputImageKey];
float i = 0;
while (i <=4 ) {
[lighten setValue:@(i) forKey:@"inputContrast"];
CIImage *result = [lighten valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[superImage extent]];
NSArray *features = [self.detector featuresInImage:[CIImage imageWithCGImage:cgImage]];
CGImageRelease(cgImage);
if (features.count >=1) {
CIQRCodeFeature *feature = [features firstObject];
NSString *scannedResult = feature.messageString;
NSLog(@"二维码扫描的结果是%@",scannedResult);
return;
}
i = i+0.5;
}
}