識別二維碼圖片

今天做項目的時候需要添加一個根據識別二維碼圖片,以下就是實現的步驟以及相關代碼:

1.在選擇相冊圖片響應的代理事件(- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info)獲取圖片,並將其轉換成NSData。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    NSString *type = [info objectForKey:UIImagePickerControllerMediaType];
    if ([type isEqualToString:@"public.image"]) {
        UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
        NSData *imageData = UIImagePNGRepresentation(image);
        //imgView.image = image;
        [picker dismissViewControllerAnimated:YES completion:nil];
        [self readQRCodeFromImageWithFileURL:imageData];
    }
}

2.iOS8以後可以直接使用 CIQRCodeFeature進行解析,代碼如下:

- (void)readQRCodeFromImageWithFileURL:(NSData *) data {
    CIImage *image = [CIImage imageWithData:data];
    //CIImage *image = [CIImage imageWithContentsOfURL:url];// 也可以根據URL找到CIImage
    if (image){
        //創建CIDetector
        CIDetector *qrDetector = [CIDetector detectorOfType:CIDetectorTypeQRCode
                                                    context:[CIContext contextWithOptions:@{kCIContextUseSoftwareRenderer : @(YES)}]
                                                    options:@{CIDetectorAccuracy : CIDetectorAccuracyHigh}];
        NSArray *features = [qrDetector featuresInImage:image];
        if ([features count] > 0){
            for (CIFeature *feature in features){
                if (![feature isKindOfClass:[CIQRCodeFeature class]]){
                    continue;
                }
                CIQRCodeFeature *qrFeature = (CIQRCodeFeature *)feature;
                NSString *content = qrFeature.messageString;//解析的數據
                NSLog(@"content is :%@",content);
            }
        }
    }
    [self.extensionContext completeRequestReturningItems:nil
                                       completionHandler:^(BOOL expired) {
                                           NSLog(@"解析失敗");
                                       }];
}


以上就是ios解析二維碼圖片的方法,以及相關代碼,希望對大家有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章