美文网首页
二维码读取

二维码读取

作者: xiari1991 | 来源:发表于2016-10-10 10:37 被阅读30次

    来源
    读取主要用到CoreImage 不过要强调的是读取二维码的功能只有在iOS8之后才支持,我们需要在相册中调用一个二维码,将其读取,代码如下

    #pragma mark-> 我的相册
    -(void)myAlbum{
        
        NSLog(@"我的相册");
        if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]){
            //1.初始化相册拾取器
            UIImagePickerController *controller = [[UIImagePickerController alloc] init];
            //2.设置代理
            controller.delegate = self;
            //3.设置资源:
            /**
             UIImagePickerControllerSourceTypePhotoLibrary,相册
             UIImagePickerControllerSourceTypeCamera,相机
             UIImagePickerControllerSourceTypeSavedPhotosAlbum,照片库
             */
            controller.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
            //4.随便给他一个转场动画
            controller.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
            [self presentViewController:controller animated:YES completion:NULL];
            
        }else{
            
            UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"设备不支持访问相册,请在设置->隐私->照片中进行设置!" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
            [alert show];
        }
        
    }
    

    完成相册代理, 我们在代理中添加读取二维码方法

    #pragma mark-> imagePickerController delegate
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
        //1.获取选择的图片
        UIImage *image = info[UIImagePickerControllerOriginalImage];
        //2.初始化一个监测器
        CIDetector*detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{ CIDetectorAccuracy : CIDetectorAccuracyHigh }];
        
        [picker dismissViewControllerAnimated:YES completion:^{
            //监测到的结果数组
            NSArray *features = [detector featuresInImage:[CIImage imageWithCGImage:image.CGImage]];
            if (features.count >=1) {
                /**结果对象 */
                CIQRCodeFeature *feature = [features objectAtIndex:0];
                NSString *scannedResult = feature.messageString;
                UIAlertView * alertView = [[UIAlertView alloc]initWithTitle:@"扫描结果" message:scannedResult delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
                [alertView show];
              
            }
            else{
                UIAlertView * alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"该图片没有包含一个二维码!" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
                [alertView show];
                
            }
            
      
        }];
        
        
    }
    

    相关文章

      网友评论

          本文标题:二维码读取

          本文链接:https://www.haomeiwen.com/subject/wbwmyttx.html