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

标签 ios objective-c swift zxing

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

似乎有一种方法可以通过Android上的意图来做到这一点,但我不确定如何在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]];

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

关于ios - 限制 ZXing 将检测的条形码类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36802617/

相关文章:

ios - 如何在不知道 iOS 中的 UUID 的情况下检测 ibeacon 设备?

objective-c - 方法返回一个保留计数为 +1 的 Objective-C 对象

objective-c - iOS Objective-C - JSON 字符串到 NSDictionary 异常

ios - 刷新 Firebase 数据库

ios - 在目标 View Controller 中获取 segue 的发送者

ios - 从属性中省略/删除 'strong' 属性时发出警告?

iphone - 2012 年秋季我应该定位哪个 iOS 版本

ios - 我将如何为我的 UITableView 设计一个异步图像下载器,它根据 TableView 中的位置确定下载的优先级?

iOS 8 进度条在下载时延迟更新(快速)

ios - 自定义 UITableViewCell 的 UIImageView 在单击之前不会宽高比