ライブカメラと画像の両方からqrとバーコードをスキャンします。以前はZBarライブラリを使ってコードをスキャンしていました。特定の種類のqrとバーコードはスキャンされません。また、AppleのAVFoundationフレームワークは、ライブカメラからコードをスキャンする際に、より高速で正確なように見えます。CIDetectorを使用してバーコードをスキャンする(1と2次元)
私はZBarを使いたくありません。ギャラリーから選んだ画像からコードをスキャンするために、私はCIDetectorを使用しています。しかし、CIDetectorは画像からバーコードをスキャンできないようです。画像はCIDetectorを使用して、ギャラリーから選ん形成私はScanning barcode from UIImage natively (i.e., not using ZBar)
、流れCIDetector For other Barcode Types上のすべてのスタック上 を検索しましたが、私はバーコードをスキャンする方法を発見していません。 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"];
}
}
あなたはすでにUIImagesでスキャンしていますか?それらをCIImage([[CIImage alloc] initWithImage:image])に変換し、CIDetectorに渡します。 – Lepidopteron
これはQRコードをスキャンするだけで、バーコードはスキャンしません。バーコードを含む画像については、 'featuresInImage'を呼び出すときに空の配列が得られます。 –