我正在使用 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/