【问题标题】:Restrict what type of barcode ZXing will detect限制 ZXing 检测的条码类型
【发布时间】:2016-04-23 05:03:09
【问题描述】:

我正在使用 ZXingObjC 从我的 iOS Swift 应用程序中的实时摄像头源进行扫描(使用 this sample code)。我想限制 ZXing 将查找或返回的可用条形码类型。具体来说,我希望它忽略 Aztec 代码以外的任何内容。目前它总是将我的演示代码检测为 UPCE,我正在寻求防止这种情况发生。

似乎有一种方法可以通过 Android 上的 Intents 执行此操作,但我不确定如何为 iOS/ZXingObjC 执行此操作。有人可以指出我正确的方向吗? 我可以提供一个过滤器到 func captureResult(capture: ZXCapture, result: ZXResult, barcodeFormat: String?) 还是我必须改变调用 ZXCapture 的方式?

感谢任何帮助。

【问题讨论】:

    标签: ios objective-c swift zxing


    【解决方案1】:

    ZXDecodeHints 类中,您可以使用这些方法添加或删除扫描仪识别的格式。

    - (void)addPossibleFormat:(ZXBarcodeFormat)format;
    - (BOOL)containsFormat:(ZXBarcodeFormat)format;
    - (int)numberOfPossibleFormats;
    - (void)removePossibleFormat:(ZXBarcodeFormat)format;
    

    这样你就可以删除你不想要的格式:

      [hints removePossibleFormat:kBarcodeFormatQRCode]
    

    以下是 lib 使用的格式列表:

    typedef enum {
      /** Aztec 2D barcode format. */
      kBarcodeFormatAztec,
    
      /** CODABAR 1D format. */
      kBarcodeFormatCodabar,
    
      /** Code 39 1D format. */
      kBarcodeFormatCode39,
    
      /** Code 93 1D format. */
      kBarcodeFormatCode93,
    
      /** Code 128 1D format. */
      kBarcodeFormatCode128,
    
      /** Data Matrix 2D barcode format. */
      kBarcodeFormatDataMatrix,
    
      /** EAN-8 1D format. */
      kBarcodeFormatEan8,
    
      /** EAN-13 1D format. */
      kBarcodeFormatEan13,
    
      /** ITF (Interleaved Two of Five) 1D format. */
      kBarcodeFormatITF,
    
      /** MaxiCode 2D barcode format. */
      kBarcodeFormatMaxiCode,
    
      /** PDF417 format. */
      kBarcodeFormatPDF417,
    
      /** QR Code 2D barcode format. */
      kBarcodeFormatQRCode,
    
      /** RSS 14 */
      kBarcodeFormatRSS14,
    
      /** RSS EXPANDED */
      kBarcodeFormatRSSExpanded,
    
      /** UPC-A 1D format. */
      kBarcodeFormatUPCA,
    
      /** UPC-E 1D format. */
      kBarcodeFormatUPCE,
    
      /** UPC/EAN extension format. Not a stand-alone format. */
      kBarcodeFormatUPCEANExtension
    } ZXBarcodeFormat;
    

    同样在ZXMultiFormatReader 类中,您应该删除存储不同格式的数组读取器中的对象。

    [self.readers addObject:[[ZXQRCodeReader alloc] init]];
    [self.readers addObject:[[ZXDataMatrixReader alloc] init]];
    [self.readers addObject:[[ZXAztecReader alloc] init]];
    [self.readers addObject:[[ZXPDF417Reader alloc] init]];
    [self.readers addObject:[[ZXMaxiCodeReader alloc] init]];
    

    您应该删除这些您不想要的线路呼叫。

    【讨论】:

    • 谢谢!这听起来不错,但我无法让它工作。我什至更改了添加所有格式的循环,因此它只添加了一个(Aztec)[result addPossibleFormat:[@0 intValue]];,但我的应用程序仍将 UPCE 报告为检测到的条形码类型。很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 2017-10-22
    • 1970-01-01
    • 2011-06-23
    相关资源
    最近更新 更多