iOS中的各种条形码阅读器免费SDK

我正在制作一个免费的条形码阅读器应用程序。 我正在寻找免费的SDK来解码Datamatrix,QR,Aztec,UPC,EAN条码。 按照现在我已经实现了ZBar SDK。 它能够成功检测QR,UPC和EAN。 我testing了这个链接

zbar和

ZXingOBjC

但是这些都无法正确检测到阿兹台克人。 与数据matrix,UPC,EAN和QR我发现Redlaser非常有效,但现在它不是免费的。

现在,有没有免费的SDK可以检测所有四个条形码没有付费,因为我想保持我的应用程序在应用程序商店免费。

请build议

PS我想扫描仪与最新的iOS可用的兼容性。

你扫描自定义ZBAR扫描仪就像这样设置更多的符号

-(void)scanProductBarCode { ZBarReaderViewController *reader = [ZBarReaderViewController new]; reader.readerDelegate = self; if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) reader.supportedOrientationsMask = ZBarOrientationMaskLandscape; else reader.supportedOrientationsMask = ZBarOrientationMaskPortrait; ZBarImageScanner *scanner = reader.scanner; [scanner setSymbology: ZBAR_UPCA config: ZBAR_CFG_ENABLE to: 1]; [scanner setSymbology: ZBAR_CODE39 config: ZBAR_CFG_ADD_CHECK to: 0]; [scanner setSymbology:ZBAR_QRCODE config:ZBAR_CFG_ADD_CHECK to:1]; [scanner setSymbology:ZBAR_EAN13 config:ZBAR_CFG_ADD_CHECK to:1]; [self presentModalViewController:reader animated:YES]; } 

试试看可能会有所帮助。

通过一些工作,你可以使用zint来做到这一点。 请参阅https://github.com/samlown/zint/blob/master/backend/aztec.c我已经在一个应用程序中使用这个。 对不起,我不能分享比这更多的代码:包括条码,阿兹特克,普通,字体,gs1,rs和bmp类然后把下面的代码放在一个单独的类

 void dataProviderReleased (void *info, const void *data, size_t size) { struct barcode_symbol *my_symbol = info; Barcode_Delete(my_symbol); } + (UIImage *)aztecBarcodeImageFromString:(NSString *)s scale:(CGFloat)scale { UIImage *image = nil; int errorCode = 0; struct barcode_symbol *my_symbol; if (s == nil) { return nil; } unsigned char *unicodeCharPtr = (unsigned char *)[s cStringUsingEncoding:NSUTF8StringEncoding]; LogInfo(@"Creating barcode image for string: %@", s); my_symbol = Barcode_Create(); my_symbol->output_options = 0; //my_symbol->output_options = BARCODE_BOX; //For a box around the bar code my_symbol->scale = scale; my_symbol->symbology = BARCODE_AZTEC; my_symbol->input_mode = UNICODE_MODE; errorCode = Barcode_Encode(my_symbol, unicodeCharPtr, 0); if (errorCode == 0) { errorCode = Barcode_Buffer(my_symbol, 0); if (errorCode == 0) { int numberOfComponents = 3; long imgSizePerRow = numberOfComponents * my_symbol->bitmap_width; long imgSize = imgSizePerRow * my_symbol->bitmap_height; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); //The dataProviderReleased method is responsible for deallocating the ZBarCode with the corresponding image data CGDataProviderRef providerRef = CGDataProviderCreateWithData(my_symbol, my_symbol->bitmap, imgSize, dataProviderReleased); CGImageRef imageRef = CGImageCreate(my_symbol->bitmap_width, my_symbol->bitmap_height, 8, numberOfComponents * 8, imgSizePerRow, colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaNone, providerRef, NULL, NO, kCGRenderingIntentDefault); image = [UIImage imageWithCGImage:imageRef]; CGColorSpaceRelease(colorSpace); CGDataProviderRelease(providerRef); CGImageRelease(imageRef); } else { LogWarn(@"Could not buffer barcode, error=%d", errorCode); Barcode_Delete(my_symbol); } } else { LogWarn(@"Could not encode barcode, error=%d", errorCode); Barcode_Delete(my_symbol); } return image; } 

现在,您可以使用AVFoundation扫描条形码,并支持您在问题中提到的所有条形码types。

快速教程: 在Swift 3和Xcode 8中构build条码和QR码阅读器