解决从相册中识别二维码图片失败的问题

CIDetector类读取相册中的二维码遇到的问题是手机截屏的图片可以读取成功,手机拍照的图片取出成功率低。并且不支持读取条形码。

解决办法:读取相册中的二维码/条形码,使用ZBarSDK,下面介绍一下怎么在工程中引入ZBarSDK,因为我的Demo工程没有使用CocoaPods去管理第三方库,所以介绍手动将ZBarSDK导入工程并配置


步骤一.在工程中建一个Frameworks文件夹将ZBarSDK文件夹导入,如图



步骤二.在工程中添加依赖库,如图:


步骤三.导入头文件并调用对应方法。

#import "ZBarSDK.h"

/**
 *  获取相册中的二维码图片
 */
- (void)getQRcodeImage {
    
    // ZBarsSDK 初始化


    ZBarReaderController *imagePicker = [ZBarReaderController new];
    
    imagePicker.showsHelpOnFail = NO; // 禁止显示读取失败页面
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    imagePicker.delegate = self;
    imagePicker.allowsEditing = YES;
    [self presentViewController:imagePicker animated:YES completion:nil];
}


/**
 *  选中图片的回调
 */
-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    id<NSFastEnumeration> results = [info objectForKey:ZBarReaderControllerResults];
    
    ZBarSymbol *symbol = nil;
    
    for(symbol in results) {
        
        break;
    }
    
    [picker dismissViewControllerAnimated:YES completion:^{
        
        //二维码字符串
        NSString *QRCodeString =  symbol.data;
        
        // 触发回调
        [self getScanDataString:QRCodeString];
        
}];
}


/**
 *  读取二维码/条码失败的回调
 */
-(void)readerControllerDidFailToRead:(ZBarReaderController *)reader withRetry:(BOOL)retry{
    
    if (retry) { //retry == 1 选择图片为非二维码。
        [self dismissViewControllerAnimated:YES completion:^{
            
            [self getScanDataString:@"未发现二维码/条码"];
        }];
        
    }
    return;
    
}



以上是我实际开发中找到的最快速解决读取相册中二维码失败的方法,也是对原文链接的精简版处理。希望对大家有帮助


分享ZBarSDK的下载地址

原文链接:http://blog.csdn.net/gaomingyangc/article/details/54017879



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值