在屏幕的某些部分打开zbar扫描仪

时间:2013-08-12 08:41:18

标签: iphone ios camera overlay zbar

我有一个应用程序,其中我使用ZBar实现了Qr代码扫描。

现在我也在相机上实现了叠加效果。

问题是虽然我已经进行了叠加,但相机会扫描整个屏幕部分。

我想扫描屏幕的某些部分。

这是我的代码,

    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];

在方形中间框中打开相机

这是我想要的输出:

1 个答案:

答案 0 :(得分:1)

尝试使用ZBarReaderView,而不是使用ZBarReaderViewController。 下面的链接为我工作。

- (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
}

希望帮助你。