二维码

来源:互联网 发布:axure mac 编辑:程序博客网 时间:2024/04/30 08:27

生成二维码的步骤:

1.导入CoreImage框架2.通过滤镜CIFilter生成二维码
// 1. 实例化二维码滤镜CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];// 2. 恢复滤镜的默认属性[filter setDefaults];// 3. 将字符串转换成NSDataNSData *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];

读取二维码:

读取二维码需要导入AVFoundation框架利用摄像头识别二维码中的内容(模拟器不行)输入(摄像头)由会话将摄像头采集到的二维码图像转换成字符串数据输出(数据)由预览图层显示扫描场景
// 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];
0 0
原创粉丝点击