前言
在iOS的APP中有時須要識別圖片中的二維碼來獲取信息,相似微信,支付寶都有這個功能。
其實蘋果自己有識別的功能,因此只須要幾句代碼便可實現。
**我簡單說一下個人步驟**
複製代碼
預覽圖
代碼以下
//建立上下文context
CIContext *context = [[CIContext alloc] init];
//建立探測器
CIDetector *QRCodeDetector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:context options:@{CIDetectorAccuracy: CIDetectorAccuracyLow}];
//識別圖片,獲取特徵
CIImage *imgCI = [[CIImage alloc] initWithImage:imgV.image];
NSArray *features = [QRCodeDetector featuresInImage:imgCI];
//判斷是否識別到二維碼
if (features.count > 0) {
//有二維碼
CIQRCodeFeature *qrcodeFeature = (CIQRCodeFeature *)features[0];
__weak typeof(self) weakSelf = self;
UIAlertController *sheet = [UIAlertController alertControllerWithTitle:@"" message:@"識別內容" preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction *dicern = [UIAlertAction actionWithTitle:@"識別圖中二維碼" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
ResultViewController *resultVC = [[ResultViewController alloc] init];
resultVC.content = qrcodeFeature.messageString;
[weakSelf.navigationController pushViewController:resultVC animated:YES];
}];
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
}];
[sheet addAction:dicern];
[sheet addAction:cancel];
[self presentViewController:sheet animated:YES completion:nil];
}else{
//沒有二維碼,這只是一張普通的圖片
NSLog(@"|沒有二維碼,這只是一張普通的圖片|");
}
複製代碼
好了,就這麼簡單!識別斷定有得時候才彈窗(我不會告訴大家我是爲了有個等級標誌的)
第一次寫文章,格式都不會,渣渣的我只能發點簡單的,給有須要的人複製代碼