ZBar没有裁剪扫描区域

时间:2014-08-25 03:40:22

标签: xcode barcode-scanner ios7.1 zbar

我通过以下代码裁剪Zbar的扫描区域:

- (void)startScanning
{
    NSLog(@"Scanning..");

    reader = [AACZBarViewController new];
    reader.readerDelegate=self;
    reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait);
    reader.showsZBarControls = NO;

    CGFloat x,y,w,h;
    x =0;
    y =0.25;
    w=1;
    h=0.50;

    reader.scanCrop = CGRectMake(x,y,w,h); //Crop scan region
    reader.cameraOverlayView = [self myOverlay];

    ZBarImageScanner *scanner = reader.scanner;
    [scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];

    [self presentViewController:reader animated:YES completion:nil];
}

然而问题是该程序仍然使用整个屏幕区域来查找条形码 - 而不是中间的50%。我不认为问题是reader.scanCrop方法,但至于真正的罪魁祸首是什么,我无法理解。

编辑:

任何?

1 个答案:

答案 0 :(得分:0)

我再次看了一下zbar文档并注意到它说摄像机上的x轴是垂直的 - 而不是水平的。现在我将阅读器设置为仅限肖像,但显然这不会以任何方式影响相机。我没有找到改变它的方法,但我确实设法裁剪到我想要的扫描区域。

解决方案: 如果你想要下面的扫描区域(x,y,w,h),那么你可以通过交换x和y以及宽度和高度来设置矩形,所以这样做(y,x,h,w)。它似乎没有准确地裁剪到边界框,但它足够接近我的目的。