我尝试使用以下代码从图像中扫描二维码。基本上我的问题是“prepareQRCodeDetector”返回 nil(至少在 iPhone 5s 上,尚未在另一台设备上测试)
注意 CIDetectorTypeFace 返回一个工作的 CIDetector。
在文档中,据说该功能在 iOS 8 中可用
//iOS CoreImage QR Detector
- (CIDetector *) prepareQRCodeDetector {
return [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{CIDetectorAccuracy: CIDetectorAccuracyHigh}];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
if (image != nil){
//AVFoundation QRCode detection
CIImage *ciImage = [[CIImage alloc] initWithCGImage:image.CGImage options:nil];
NSString * decodedAccountName = @"";
CIDetector * detector = [self prepareQRCodeDetector];
if (detector != nil) {
NSArray<CIFeature*> *features = [detector featuresInImage:ciImage];
for (id feature in features) {
decodedAccountName = ((CIQRCodeFeature *)feature).messageString;
}
[self openUserProfileByAccountName:decodedAccountName];
}
}
[picker dismissViewControllerAnimated:YES completion:nil];
}