QRScanReader.m 1.47 KB
//
//  QRScanReader.m
//  Bitcoin
//
//  Created by lewin on 2018/3/14.
//  Copyright © 2018年 Facebook. All rights reserved.
//

#import "QRScanReader.h"
#import <AVFoundation/AVFoundation.h>
#import <CoreImage/CoreImage.h>

@implementation QRScanReader
RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(readerQR:(NSString *)fileUrl success:(RCTPromiseResolveBlock)success failure:(RCTPromiseRejectBlock)failure){
  dispatch_sync(dispatch_get_main_queue(), ^{
    NSString *result = [self readerQR:fileUrl];
    if(result){
      success(result);
    }else{
      failure(nil, @"没有检测到二维码", nil);
    }
  });
  
  
  
}

-(NSString*)readerQR:(NSString*)fileUrl{
  fileUrl = [fileUrl stringByReplacingOccurrencesOfString:@"file://" withString:@""];
  
  CIContext *context = [CIContext contextWithOptions:nil];
  
  // CIDetector(CIDetector可用于人脸识别)进行图片解析,声明一个CIDetector,并设定识别类型 CIDetectorTypeQRCode
  CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:context options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];
  NSData *fileData = [[NSData alloc] initWithContentsOfFile:fileUrl];
  CIImage *ciImage = [CIImage imageWithData:fileData];
  NSArray *features = [detector featuresInImage:ciImage];
  if(!features || features.count==0){
    return nil;
  }
  //3. 获取扫描结果
  CIQRCodeFeature *feature = [features objectAtIndex:0];
  NSString *scannedResult = feature.messageString;
  return scannedResult;
}

@end