ios 네 이 티 브 QR 코드 스 캔 및 생 성 실현 튜 토리 얼

4231 단어 iosQR 코드스캐닝
이전 에는 모두 제3자 의 QR 코드 였 고 조작 이 간단 한 pod 통합 으로 흐뭇 했다.회사 의 프로젝트 가 갈수 록 메스 꺼 워 지면 서 스스로 하 나 를 훑 어 보 는 것 이 비교적 확실 하 다.
demo 의 주요 기능 은 QR 코드 를 스 캔 하고 QR 코드 를 생 성 합 니 다.
검색 관련 클래스
QR 코드 스 캔 은 카 메 라 를 가 져 오고 사진 정 보 를 읽 어야 하기 때문에 시스템 의 AVFoundation 프레임 워 크 를 가 져 와 영상 세 션 을 만들어 야 합 니 다.우 리 는 몇 가지 종 류 를 사용 해 야 한다.
AVCapture Session 세 션 대상.하드웨어 설비 가 출력 정 보 를 입력 하 는 다리 로 서 실시 간 으로 설비 데 이 터 를 얻 는 책임 을 진다AVCapture DeviceInput 장치 입력 클래스.이 종 류 는 데 이 터 를 입력 하 는 하드웨어 장 치 를 표시 하고 추상 적 인 장 치 를 설정 하 는 portAVCapture Metadata 출력 클래스.이것 은 QR 코드,바코드 등 이미지 데이터 의 식별 을 지원 합 니 다
  • AVCapture Video Preview Layer 그래 픽 클래스.카메라 가 가 져 온 원본 데 이 터 를 빠르게 보 여 줍 니 다
  • QR 코드 스 캔 기능 의 실현 절 차 는 세 션 대상 을 만들어 하드웨어 장치 에서 입력 한 데 이 터 를 얻 고 실시 간 으로 인터페이스 에 표시 하 는 것 이다.해당 이미지 데 이 터 를 검색 할 때 AVCapture Video Preview Layer 형식 으로 되 돌려 줍 니 다.
    QR 코드 스 캔
    1.먼저 틀 에 붓는다
    
    #import <AVFoundation/AVFoundation.h>
    2.협의 준수
    
    <AVCaptureMetadataOutputObjectsDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate>
    3.주로 사용 하 는 속성 설정
    
    //    ,       
    @property (strong, nonatomic) AVCaptureDevice * device;
    
    //    
    @property (strong, nonatomic) AVCaptureDeviceInput * input;
    
    //    ,               
    @property (strong, nonatomic) AVCaptureMetadataOutput * output;
    
    //AVFoundation          ,             
    @property (strong, nonatomic) AVCaptureSession * session;
    
    //         , CALayer   
    @property (strong, nonatomic) AVCaptureVideoPreviewLayer * preview;

    4.로 컬 앨범 QR 코드 당기 기
    
    - (void)chooseButtonClick
    {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
    //    
    [self stopScan];
    
    //1       
    UIImagePickerController *pickVC = [[UIImagePickerController alloc]init];
    //2       
    /**
    UIImagePickerControllerSourceTypePhotoLibrary,  
    UIImagePickerControllerSourceTypeCamera,  
    UIImagePickerControllerSourceTypeSavedPhotosAlbum,   
    */
    
    pickVC.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    //3     
    pickVC.delegate = self;
    //4.    
    self.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
    [self presentViewController:pickVC animated:YES completion:nil];
    }
    else
    {
    [self showAlertViewWithTitle:@"    " withMessage:@"      。         ,    ->  ->       !"];
    }
    
    }
    QR 코드 생 성
    1.QR 코드 생 성
    
    /**
    * 2.  CIFilter(  )  
    */
    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    
    /**
    * 3.        
    */
    [filter setDefaults];
    
    /**
    * 4.    (       KVC)
    */
    //     
    NSString *info = @"hahahahhahahaha";
    //      NSData
    NSData *infoData = [info dataUsingEncoding:NSUTF8StringEncoding];
    //    kvc  
    [filter setValue:infoData forKeyPath:@"inputMessage"];
    
    /**
    * 5.     
    */
    CIImage *outImage = [filter outputImage];
    
    //imageView.image = [UIImage imageWithCIImage:outImage];//       ,         
    
    self.codeImage.image = [outImage createNonInterpolatedWithSize:150];
    2.로 컬 앨범 에 저장
    
    UIGraphicsBeginImageContext(self.view.bounds.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    //    
    UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
    //     
    UIGraphicsEndImageContext();
    completion(image);
    
    /**
    *           
    */
    UIImageWriteToSavedPhotosAlbum(image, self , @selector(saveImage:didFinishSavingWithError:contextInfo:), nil);//        
    주요 코드 가 붙 어 있 습 니 다.관심 이 있 으 면 gibHub 주소:https://github.com/MrBMask여기 보 세 요.
    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기