iOS 识别相册中的二维码或条形码

2,696 阅读1分钟

前言: 使用CIDetector这个类只能识别二维码图片,条形码目前暂不支持

可以通过使用ZBarSDK第三方来识别相册中的二维码或条形码

第一步: 导入SDK

pod 'ZBarSDK', '~> 1.3.1'

第二步:

//打开相册
- (void)openPhoto {
   //ZBarsSDK初始化
   ZBarReaderController *imagePicker = ZBarReaderController.new;
   imagePicker.showsHelpOnFail = NO;//禁止显示读取失败页面
   imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
   imagePicker.delegate = self;
   imagePicker.allowsEditing = YES;
   [self presentViewController:imagePicker animated:YES completion:nil];
}

//选中图片后的处理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<UIImagePickerControllerInfoKey, id> *)info {
   
   id<NSFastEnumeration> results = [info objectForKey:ZBarReaderControllerResults];

   ZBarSymbol *symbol = nil;

   for (symbol in results) {
       break;
   }
   
   [picker dismissViewControllerAnimated:YES completion:^{
       //扫码信息
       NSString *QRCodeString = symbol.data;
       NSLog(@"QRCodeString = %@",QRCodeString);
   }];
}

备注:如果想通过ZBarSDK来进行拍照识别二维码和条形码也可以,只需将 - (void)openPhoto;中的sourceType改为:
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
即可, 但是注意:这种方式是拍照识别,不是扫一扫识别;

参考:www.jianshu.com/p/7917e28f7…