iOS二维码识别/二维码生成

识别图片使用的是ZBar,最初的方案为ZXing,因为ZXing有人在维护,但ZXing识别相册中的二维码图片或本地的图片,有些图片根本就识别不出来,且耗时较长,所以改为使用ZBar。在网上找到一篇文章 再见ZXing 使用系统原生代码处理QRCode ,实测发现在iOS9,iphone4s上传回来的数组为空。代码如下:

//decode

- (NSString *)decodeQRImageWith:(UIImage*)aImage {    NSString *qrResult = nil;    //iOS8及以上可以使用系统自带的识别二维码图片接口,但此api有问题,在一些机型上detector为nil。    //    if (iOS8_OR_LATER) {    //        CIContext *context = [CIContext contextWithOptions:nil];    //        CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:context options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];    //        CIImage *image = [CIImage imageWithCGImage:aImage.CGImage];    //        NSArray *features = [detector featuresInImage:image];    //        CIQRCodeFeature *feature = [features firstObject];    //    //        qrResult = feature.messageString;    //    } else {    ZBarReaderController* read = [ZBarReaderController new];    CGImageRef cgImageRef = aImage.CGImage;    ZBarSymbol* symbol = nil;    for(symbol in [read scanImage:cgImageRef]) break;    qrResult = symbol.data ;    return qrResult;}

无图无真相:

14567CBE-E1D2-4FA7-AFA3-8B2037171F38.jpg

dectector的值为nil,也就是说

CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:context options:@{CIDetectorAccuracy