二维码读取
来源:互联网 发布:linux压缩文件名 编辑:程序博客网 时间:2024/05/01 00:40
1 #pragma mark - 读取二维码 2 - (void)readQRCoder 3 { 4 // 1. 摄像头设备 5 AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 6 7 // 2. 设置输入 8 // 因为模拟器是没有摄像头的,因此在此最好做一个判断 9 NSError *error = nil;10 AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];11 12 if (error) {13 NSLog(@"没有摄像头-%@", error.localizedDescription);14 15 return;16 }17 18 // 3. 设置输出(Metadata元数据)19 AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];20 // 3.1 设置输出的代理21 // 说明:使用主线程队列,相应比较同步,使用其他队列,相应不同步,容易让用户产生不好的体验22 [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];23 // [output setMetadataObjectsDelegate:self queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];24 25 // 4. 拍摄会话26 AVCaptureSession *session = [[AVCaptureSession alloc] init];27 // 添加session的输入和输出28 [session addInput:input];29 [session addOutput:output];30 // 4.1 设置输出的格式31 // 提示:一定要先设置会话的输出为output之后,再指定输出的元数据类型!32 [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];33 34 // 5. 设置预览图层(用来让用户能够看到扫描情况)35 AVCaptureVideoPreviewLayer *preview = [AVCaptureVideoPreviewLayer layerWithSession:session];36 // 5.1 设置preview图层的属性37 [preview setVideoGravity:AVLayerVideoGravityResizeAspectFill];38 // 5.2 设置preview图层的大小39 [preview setFrame:self.view.bounds];40 // 5.3 将图层添加到视图的图层41 [self.view.layer insertSublayer:preview atIndex:0];42 self.previewLayer = preview;43 44 // 6. 启动会话45 [session startRunning];46 47 self.session = session;48 }49 50 #pragma mark - 输出代理方法51 // 此方法是在识别到QRCode,并且完成转换52 // 如果QRCode的内容越大,转换需要的时间就越长53 - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection54 {55 // 会频繁的扫描,调用代理方法56 // 1. 如果扫描完成,停止会话57 [self.session stopRunning];58 // 2. 删除预览图层59 [self.previewLayer removeFromSuperlayer];60 61 NSLog(@"%@", metadataObjects);62 // 3. 设置界面显示扫描结果63 64 if (metadataObjects.count > 0) {65 AVMetadataMachineReadableCodeObject *obj = metadataObjects[0];66 // 提示:如果需要对url或者名片等信息进行扫描,可以在此进行扩展!67 _label.text = obj.stringValue;68 }69 }
0 0
- 二维码读取
- 电脑生成读取二维码
- iOS读取制作二维码
- iOS二维码的读取
- 二维码读取与扫描
- java 读取二维码
- iOS读取二维码
- java 读取二维码
- iOS 读取相册二维码
- java 读取二维码
- 读取进度加载二维码
- java生成,读取二维码,zxing二维码
- 【iOS开发】二维码生成 二维码读取 (带Logo的二维码)
- iOS 二维码 (包括扫描二维码,和读取二维码图片)
- ZBar 从相册读取二维码
- 二维码的生成和读取
- Swift - 二维码QRCode的读取
- 二维码的生成和读取
- EXCEL 单变量求解 解一元三次方程
- opencv之图像反转
- 【C语言学习笔记】之sizeof
- 【索引】General Problem Solving Techniques:Examples:Beginner
- 用GPS模块校准系统时间
- 二维码读取
- The C++ Standard Library之auto_ptr
- 在WIN7下虚拟机中安装配置linux调试环境全攻略
- ios7新增基础类库以及OC新特性
- Android实现推送方式解决方案
- 发送邮件的asp.net代码
- ARM调试多进程
- mybatis实战教程(mybatis in action),mybatis入门到精通
- Date类实现