我想从实时摄像头和图像中扫描二维码和条形码。我之前使用 ZBar 库来扫描代码。它不扫描特定类型的二维码和条形码。此外,在从实时摄像头扫描代码时,Apple 的 AVFoundation 框架似乎更加快速和准确。
所以我不想使用ZBar。为了从从图库中挑选的图像中扫描代码,我使用了 CIDetector。但似乎 CIDetector 无法从图像中扫描条形码。我已经在整个堆栈中搜索了流CIDetector 对于其他条形码类型, 从 UIImage 本地扫描条形码(即,不使用 ZBar)
但我还没有找到一种方法来扫描使用 CIDetector 从画廊中挑选的图像的条形码。是否可以使用 CIDetector 从 UIImages 扫描条形码?
不要推荐其他第三方库。我想使用苹果的默认框架来完成这项工作。
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
[picker dismissViewControllerAnimated:YES completion:nil];
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
CIImage *img = [[CIImage alloc]initWithImage:image];
CIDetector* detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];
if (detector)
{
NSArray* featuresR = [detector featuresInImage:img];
NSString* decodeR;
for (CIQRCodeFeature* featureR in featuresR)
{
NSLog(@"decode %@ ",featureR.messageString);
decodeR = featureR.messageString;
[self showAlertWithTitle:@"Success" withMessage:decodeR];
return;
}
[self showAlertWithTitle:@"Error" withMessage:@"Invalid Image"];
}
}