iOS長按圖片識別二維碼

前言

在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(@"|沒有二維碼,這只是一張普通的圖片|");
    }
複製代碼
好了,就這麼簡單!識別斷定有得時候才彈窗(我不會告訴大家我是爲了有個等級標誌的)
第一次寫文章,格式都不會,渣渣的我只能發點簡單的,給有須要的人複製代碼
相關文章
相關標籤/搜索