美文网首页
二维码的生成与识别

二维码的生成与识别

作者: rlqs | 来源:发表于2016-07-03 22:11 被阅读229次

    l从iOS7开始集成了二维码的生成和读取功能

    l此前被广泛使用的zbarsdk目前不支持64位处理器

    l生成二维码的步骤:

    1.导入CoreImage框架

    2.通过滤镜CIFilter生成二维码

    l二维码的内容(传统的条形码只能放数字):

    纯文本 名片 URL

    生成二维码

    1. 实例化二维码滤镜

    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

    2. 恢复滤镜的默认属性

    [filter setDefaults];

    3. 将字符串转换成NSData

    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

    4. 通过KVO设置滤镜inputMessage数据

    [filter setValue:data forKey:@"inputMessage"];

    5. 获得滤镜输出的图像

    CIImage *outputImage = [filter outputImage];

    6. 将CIImage转换成UIImage,并放大显示

    return [UIImage imageWithCIImage:outputImage scale:20.0 orientation:UIImageOrientationUp];

    识别二维码

    l读取二维码需要导入AVFoundation框架

    l利用摄像头识别二维码中的内容(模拟器不行)

    1.输入(摄像头)

    2.由会话将摄像头采集到的二维码图像转换成字符串数据

    3.输出(数据)

    4.由预览图层显示扫描场景

    Code

    1. 实例化拍摄设备

    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    2. 设置输入设备

    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];

    3. 设置元数据输出

    3.1 实例化拍摄元数据输出

    AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];

    3.3 设置输出数据代理

    [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];

    4. 添加拍摄会话

    4.1 实例化拍摄会话

    AVCaptureSession *session = [[AVCaptureSession alloc] init];

    4.2 添加会话输入

    [session addInput:input];

    4.3 添加会话输出

    [session addOutput:output];

    4.3 设置输出数据类型,需要将元数据输出添加到会话后,才能指定元数据类型,否则会报错

    [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];

    5. 视频预览图层

    5.1 实例化预览图层

    AVCaptureVideoPreviewLayer *preview = [AVCaptureVideoPreviewLayer layerWithSession:_session];

    preview.videoGravity = AVLayerVideoGravityResizeAspectFill;

    preview.frame = self.view.bounds;

    5.2 将图层插入当前视图

    [self.view.layer insertSublayer:preview atIndex:100];

    self.previewLayer = preview;

    6. 启动会话

    [_session startRunning];

    相关文章

      网友评论

          本文标题:二维码的生成与识别

          本文链接:https://www.haomeiwen.com/subject/krjcjttx.html