限制 ZXing 将检测的条形码类型



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

似乎有一种方法可以通过Android上的Intents来做到这一点,但我不确定如何为iOS/ZXingObjC做到这一点。有人可以指出我正确的方向吗?我可以向 func captureResult(capture: ZXCapture, result: ZXResult, barcodeFormat: String?)还是我必须改变ZXCapture的称呼方式?

任何帮助,不胜感激。

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

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

以便您可以删除不需要的格式:

  [hints removePossibleFormat:kBarcodeFormatQRCode]

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

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

您应该删除这些您不需要的线路调用。

最新更新