2013-08-12 3 views
2

저는 ZBar를 사용하여 Qr 코드 스캐닝을 구현 한 앱을 보유하고 있습니다.화면의 특정 부분에 zbar 스캐너를 엽니 다.

이제 카메라에 오버레이를 구현했습니다.

문제는 오버레이를 만들었지 만 카메라가 화면의 전체 부분을 스캔합니다.

화면의 특정 부분을 스캔하고 싶습니다. 아웃 넣어 여기

reader = [ZBarReaderViewController new]; 
    isCameraStarted = YES; 

    reader.readerDelegate = self; 
    reader.supportedOrientationsMask = ZBarOrientationMaskAll; 

    //Add flash Camera 
    if(isTorchOn==NO) 
     reader.cameraFlashMode=UIImagePickerControllerCameraFlashModeOff; 
    else 
     reader.cameraFlashMode=UIImagePickerControllerCameraFlashModeOn; 

    ZBarImageScanner *scanner = reader.scanner; 
    // TODO: (optional) additional reader configuration here 

    // EXAMPLE: disable rarely used I2/5 to improve performance 
    [scanner setSymbology: ZBAR_I25 
        config: ZBAR_CFG_ENABLE 
         to: 0]; 

    [scanner setSymbology:ZBAR_NONE config:ZBAR_CFG_ENABLE to:0]; 
    [scanner setSymbology:ZBAR_QRCODE 
        config:ZBAR_CFG_ENABLE 
         to:1]; 
    reader.cameraOverlayView = vw; 
     reader.showsZBarControls=NO; 
    [self presentViewController:reader animated:NO completion:nil]; 
    [reader release]; 

광장 중간 상자 여기

에서 카메라를 열고, 내 코드입니다 내가 원하는 :

대신 ZBarReaderViewController를 사용

+0

비슷한 질문을했고 여기에 답했습니다. http://stackoverflow.com/a/9937269/908263 – Krajsnick

답변

1

시도 ZBarReaderView를 사용하여. 아래 링크는 나를 위해 일했습니다.

- (void)startScanning{ 
NSLog(@"Scanning.."); 
ZBarReaderView*reader = [ZBarReaderView new]; 
ZBarImageScanner * scanner = [ZBarImageScanner new]; 
[scanner setSymbology: ZBAR_I25 
       config: ZBAR_CFG_ENABLE 
        to: 0]; 
reader = [reader initWithImageScanner:scanner]; 
reader.readerDelegate = self; 
reader.tracksSymbols = YES; 
reader.frame = CGRectMake(10, 100, [self getWidth]- 20, [self getHeight] -200); 
reader.torchMode = 0; 
dispatch_async(dispatch_get_main_queue(), ^{[reader start];}); 

[self.container addSubview:reader]; 
} 

-(void) readerView:(ZBarReaderView *)readerView didReadSymbols:(ZBarSymbolSet *)symbols fromImage :(UIImage *)image 
{ 
for (ZBarSymbol *sym in symbols) 
    { 
    NSLog(@"Scanned data: %@", sym.data); 
    break; 
} 
[readerView stop]; 
// action todo 
} 

호프가 도움이됩니다.

+0

매우 훌륭합니다. 일하는 것이 나를 찾습니다. –

+0

환상적인 솔루션 ... 정말 내 문제를 해결 –