我目前正处于完成使用RedLaser API的条形码扫描应用程序的最后阶段。尽管存在一个挑战,但我无法在图像中设置应该识别条形码的区域。它从完整图像而不是我设置的ActiveRegion中识别条形码。

我没有确切的代码,但这实际上是此source的副本:

(void) setPortraitLayout
{
    // Set portrait
    self.parentPicker.orientation = UIImageOrientationUp;

    // Set the active scanning region for portrait mode
    [self.parentPicker setActiveRegion:CGRectMake(0, 100, 320, 250)];

    // Animate the UI changes
    CGAffineTransform transform = CGAffineTransformMakeRotation(0);

    [UIView beginAnimations:@"rotateToPortrait" context:nil]; // Tell UIView we're ready to start animations.
    [UIView setAnimationDelegate:self];
    [UIView setAnimationCurve: UIViewAnimationCurveLinear ];
    [UIView setAnimationDuration: 0.5];

    redlaserLogo.transform = transform;

    //A visible frame to aim with
    [self setActiveRegionFrame];

    [UIView commitAnimations]; // Animate!
}

(void) setActiveRegionFrame
{
    //this just draws up a visible rectangle slightly smaller than supposed ActiveRegion
    [_rectLayer setFrame:CGRectMake(self.parentPicker.activeRegion.origin.x - 50, self.parentPicker.activeRegion.origin.y - 50, self.parentPicker.activeRegion.size.width - 50, self.parentPicker.activeRegion.size.height - 50)];
    CGPathRef path = [self newRectPathInRect:_rectLayer.bounds];
    [_rectLayer setPath:path];
    CGPathRelease(path);
    [_rectLayer needsLayout];
}


任何人都具有使用手动ActiveRegion设置RedLaser的经验吗?我正在使用3.1.0 iPhone库(还尝试使用最新的3.2.4,以防较早出现错误)。

最佳答案

我为RedLaser工作,所以我可以提供帮助。我还建议您参考我们的SDK zip中的“使用RedLaser SDK”文件。

简短答案:ActiveRegions已被弃用。请改用BarcodeResult类。说明的第6-9页

更长的答案:BarcodeResult类包含所有扫描的条形码的位置(NSValues的NSArray)。您可以告诉您的应用忽略返回值不在所需区域的所有结果。

PDF中的相关文本:


  最后,每个条形码将具有一个NSValues NSArray,其中每个NSValue是一个CGPoint,指示我们将条形码放置在何处。点的坐标将与BarcodePickerController的边界在同一坐标系中。数组中的第一个点将位于条形码的左上方,第二个点将位于条形码的右上方。请注意,如果条形码被识别为“上下颠倒”,则在屏幕上查看时,这些点将位于右下方和左下方。另外,由于在使用设备的前置摄像头进行识别时会预览预览,因此这些点也不一定按顺时针缠绕顺序。数组通常包含4个点,但可以包含更多或更少。
  
  从这些点产生的路径可能不会覆盖整个条形码,并且可能只有一个像素高或宽。条形码位置仅在实际识别出条形码的帧上更新,因此自mostRecentScanTime以来时间越长,条形码仍位于相机预览中的那个位置的可能性就越小。通过部分识别方法识别的条形码(用于某些长条形码,允许用户将相机指向条形码的每个部分并将完整代码拼凑在一起)将仅具有要扫描条形码的最新部分的识别信息。


如果您还有其他疑问,请通过http://support.redlaser.com/进行询问-我们的回复速度很快。

关于iphone - RedLaser SetActiveRegion iPhone,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9268498/

10-10 04:53