IOS生成与读取二维码名片

2020-01-14 19:03:10丽君


@property (weak, nonatomic) IBOutlet UIImageView *imageView;

3)、生成二维码


/**点击屏幕的时候显示二维码*/
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
  //1.创建滤镜
  CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

  //2.恢复默认
  [filter setDefaults];

  //3.给滤镜添加数据
  NSString *dataString = @"http://www.easck.com/theDesertIslandOutOfTheWorld/";
//  NSString *dataString = @"世俗孤岛";
  //将数据转换成NSData类型
  NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];
  //通过KVC设置滤镜的二维码输入信息
  [filter setValue:data forKey:@"inputMessage"];

  //4.获取输出的二维码图片(CIImage类型)
  CIImage *outImage = [filter outputImage];
  //将CIImage类型的图片装换成UIImage类型的图片
  UIImage *image = [UIImage imageWithCIImage:outImage];

  //5.显示二维码图片
  self.imageView.image = image;
}

4)、通过二维码扫描工具,可以扫描生成的二维码
若二维码的输入信息是URL,则会打开指定的网络资源
三、二维码的扫描
1、注意:

  • 二维码扫码需要使用摄像头,需要真机设备
  • Xcode7可是免费真机调试

    2、二维码扫描的过程

    • 通过摄像头扫描二维码
    • 解析二维码数据
    • 根据二维码信息执行相应的操作

      3、过程分析
      1)、通过摄像头扫描二维码信息需要用到AVCaptureSession类

      • 该类是用来协调从音频/视频输入端口到输出端的数据
      • 该类需要一个输入设备AVCaptureDeviceInput,通常是摄像头
      • 该类需要一个输出端,输出指定类型的数据,有多个类可以选择(如:AVCaptureMetadataOutput)
      • 需要调用- startRunning方法开启输入源

        2)、通过AVCaptureSession类捕获的数据,可以通过指定输出端的过滤类型来以特定的类型解析捕获的数据