文档章节

IOS7原生API进行二维码条形码的扫描

大魔王_K
 大魔王_K
发布于 2016/01/28 16:36
字数 375
阅读 41
收藏 3
//需要真机
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>//用于处理采集信息的代理
{
    AVCaptureSession * session;//输入输出的中间桥梁
}
@end
@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //获取摄像设备
    AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    //创建输入流
    AVCaptureDeviceInput * input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
    //创建输出流
    AVCaptureMetadataOutput * output = [[AVCaptureMetadataOutput alloc]init];
    //设置代理 在主线程里刷新
    [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
    
    //初始化链接对象
    session = [[AVCaptureSession alloc]init];
    //高质量采集率
    [session setSessionPreset:AVCaptureSessionPresetHigh];
    
//    1、这个CGRect参数和普通的Rect范围不太一样,它的四个值的范围都是0-1,表示比例。
//    2、经过测试发现,这个参数里面的x对应的恰恰是距离左上角的垂直距离,y对应的是距离左上角的水平距离。
//    3、宽度和高度设置的情况也是类似。
//    3、举个例子如果我们想让扫描的处理区域是屏幕的下半部分,我们这样设置
//    output.rectOfInterest=CGRectMake(0.5,0,0.5, 1);
    
    [session addInput:input];
    [session addOutput:output];
    //设置扫码支持的编码格式(如下设置条形码和二维码兼容)
    output.metadataObjectTypes=@[AVMetadataObjectTypeQRCode,AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode128Code];
    
    //创建摄像头显示图层
    AVCaptureVideoPreviewLayer * layer = [AVCaptureVideoPreviewLayer layerWithSession:session];
    layer.videoGravity=AVLayerVideoGravityResizeAspectFill;
    layer.frame=self.view.layer.bounds;
    [self.view.layer insertSublayer:layer atIndex:0];
    //开始捕获
    [session startRunning];
}

#pragma mark 信息捕获代理方法
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{
    if (metadataObjects.count>0) {
        //[session stopRunning];
        AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjects objectAtIndex : 0 ];
        //输出扫描字符串
        NSLog(@"%@",metadataObject.stringValue);
    }
}

@end


© 著作权归作者所有

共有 人打赏支持
大魔王_K
粉丝 2
博文 19
码字总数 11255
作品 0
西安
私信 提问
iOS7使用原生API进行二维码和条形码的扫描

使用iOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库。常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析二维码的接口。经...

珲少
2015/04/24
0
5
iOS - QRCode 二维码

1、QRCode 在 iOS7 以前,在 iOS 中实现二维码和条形码扫描,我们所知的有,两大开源组件 ZBar 与 ZXing。iOS7 之后可以利用系统原生 API 生成二维码, iOS8 之后可以生成条形码, 系统默认生成...

仟0123
2016/09/15
0
0
使用IOS7原生API进行二维码条形码的扫描

IOS7之前,开发者进行扫码编程时,一般会借助第三方库。常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析二维码的接口。经过测试,使用原生API扫描和处理的效率非常...

天使雨儿
2015/09/09
116
0
详细易懂的二维码的扫描、识别与生成②

ios7之前我们实现二维码扫描是借助第三方(,等)来实现的,在ios7之后系统自己提供二维码扫描的方法,性能也要比第三方更好。 今天就来介绍一下原生二维码的使用,包括,和。讲解中只展示部分...

秦无炎
2016/12/22
27
0
IOS7原生API进行二维码条形码的扫描

// // ViewController.m // IOS7原生API进行二维码条形码的扫描 // // Created by 崔晓宇 on 15/12/30. // Copyright © 2015年 崔晓宇. All rights reserved. // //需要真机 #import "ViewC......

温暖c
2016/01/05
11
0

没有更多内容

加载失败,请刷新页面

加载更多

关于eclipse2017 import javax.servlet.jsp.tagext引入错误得问题

在eclipse中: 这个javax.servlet.jsp.tagext属于是tomcat相关jar包找到jsp-api.jar 在tomcat文件夹下边的lib文件夹中就有 如果项目中报错的话 把这个加入到项目中 在myeclipse中: 如下图,...

ZhangLG
7分钟前
0
0
如何用RSS订阅?

本文由云+社区发表 摘要:我们常常会有订阅别人文章的需求,有更新的时候希望能有提醒的功能,RSS就是这样一个订阅的方式。很多网站上看到RSS的入口,点进去以后总是显示一堆的XML代码,我们...

腾讯云加社区
8分钟前
0
0
springcloud整体架构

架构 说明 针对这个架构图我分层介绍一下: 1、是web服务器的选型,这个我选择的是nginx+keepalived,haproxy也是一个选择,但是haproxy在反向代理处理跨域访问的时候问题很多。所以我们ngi...

张欢19933
11分钟前
0
0
Linux权限详解

Linux权限详解 命令之 chmod:修改权限 阅读目录(Content) 权限简介 一、快速入门 更改文件权限 (chmod命令) 一般使用格式 数字权限使用格式 更改文件拥有者(chown命令) 二、Linux权限详...

hblt-j
18分钟前
0
0
postgres预写式日志的内核实现详解-heap2类型

导读: postgres预写式日志的内核实现详解-概述 postgres预写式日志的内核实现详解-wal记录结构 postgres预写式日志的内核实现详解-wal记录写入 postgres预写式日志的内核实现详解-wal记录读...

movead
34分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部