來(lái)源
讀取主要用到CoreImage 不過(guò)要強(qiáng)調(diào)的是讀取二維碼的功能只有在iOS8之后才支持,我們需要在相冊(cè)中調(diào)用一個(gè)二維碼刚陡,將其讀取阶剑,代碼如下
#pragma mark-> 我的相冊(cè)
-(void)myAlbum{
NSLog(@"我的相冊(cè)");
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]){
//1.初始化相冊(cè)拾取器
UIImagePickerController *controller = [[UIImagePickerController alloc] init];
//2.設(shè)置代理
controller.delegate = self;
//3.設(shè)置資源:
/**
UIImagePickerControllerSourceTypePhotoLibrary,相冊(cè)
UIImagePickerControllerSourceTypeCamera,相機(jī)
UIImagePickerControllerSourceTypeSavedPhotosAlbum,照片庫(kù)
*/
controller.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
//4.隨便給他一個(gè)轉(zhuǎn)場(chǎng)動(dòng)畫
controller.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
[self presentViewController:controller animated:YES completion:NULL];
}else{
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"設(shè)備不支持訪問(wèn)相冊(cè)经瓷,請(qǐng)?jiān)谠O(shè)置->隱私->照片中進(jìn)行設(shè)置翠储!" delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
[alert show];
}
}
完成相冊(cè)代理绘雁, 我們?cè)诖碇刑砑幼x取二維碼方法
#pragma mark-> imagePickerController delegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
//1.獲取選擇的圖片
UIImage *image = info[UIImagePickerControllerOriginalImage];
//2.初始化一個(gè)監(jiān)測(cè)器
CIDetector*detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{ CIDetectorAccuracy : CIDetectorAccuracyHigh }];
[picker dismissViewControllerAnimated:YES completion:^{
//監(jiān)測(cè)到的結(jié)果數(shù)組
NSArray *features = [detector featuresInImage:[CIImage imageWithCGImage:image.CGImage]];
if (features.count >=1) {
/**結(jié)果對(duì)象 */
CIQRCodeFeature *feature = [features objectAtIndex:0];
NSString *scannedResult = feature.messageString;
UIAlertView * alertView = [[UIAlertView alloc]initWithTitle:@"掃描結(jié)果" message:scannedResult delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
[alertView show];
}
else{
UIAlertView * alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"該圖片沒(méi)有包含一個(gè)二維碼!" delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil, nil];
[alertView show];
}
}];
}