IOS生成与读取二维码名片

haioulucky

haioulucky

2016-02-19 09:15

下面图老师小编要跟大家分享IOS生成与读取二维码名片,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!

一、概述
1、通过某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的
2、二维码通常可以包含以下内容

纯文本 名片 URL

3、二维码具有非常广泛的应用

二维码名片 扫码付款 网址(URL),扫描后自动打开网址

二、二维码的生成
1、生成原理
通过一个类CIFilter(滤镜)包含二维码中所有的信息,然后生成一张二维码图片
二维码中间的icon(头像),是通过在生成的图片上添加一张图片实现的
2、生成步骤

创建滤镜 初始化滤镜 添加二维码信息 获取生成的二维码图片 将二维码图片展示出来

3、生成的二维码的效果图

4、具体代码实现
1)、通过storyboard创建两个imageView,分别用来展示二维码图片和头像

2)、拥有展示二维码图片的imageView

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

3)、生成二维码

/**点击屏幕的时候显示二维码*/- (void)touchesBegan:(NSSetUITouch * *)touches withEvent:(UIEvent *)event{  //1.创建滤镜  CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];  //2.恢复默认  [filter setDefaults];  //3.给滤镜添加数据  NSString *dataString = @"http://www.xxx.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类捕获的数据,可以通过指定输出端的过滤类型来以特定的类型解析捕获的数据
3)、可以为输出端AVCaptureMetadataOutput设置代理,来听捕获过程
4)、通过AVCaptureVideoPreviewLayer类将获取的原始数据渲染到指定的图层
4、二维码的生成过程
通过成员属性保存输入源与输出端的协调者(AVCaptureSession对象)

@property (nonatomic, weak) AVCaptureSession *session;

通过成员属性保存展示通过输入设备输入的元数据的图层,用于在适当的时候移除图层

@property (nonatomic, weak) AVCaptureVideoPreviewLayer *layer;

创建AVCaptureSession类的对象(简称:捕获对象),用于捕获音频/视频端口的数据

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

给捕获对象添加输入设备(通常是摄像头)

//设置输入设备输入数据的类型(视频)AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];[session addInput:input];

给捕获对象添加输出端

AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];//设置代理[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];[session addOutput:output];

设置输入源的过滤条件(只获取二维码信息)

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];

将捕获的原始数据显示到控制器的view上

AVCaptureVideoPreviewLayer *layer = [AVCaptureVideoPreviewLayer layerWithSession:session];layer.frame = self.view.bounds;[self.view.layer addSublayer:layer];

开始获取数据

[session startRunning];

实现输出端的代理方法,监听捕获过程

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{  if (metadataObjects.count  0)  {//获取输出端的信息AVMetadataMachineReadableCodeObject *object = [metadataObjects lastObject];NSLog(@"%@", object.stringValue);//停止扫描[self.session stopRunning];//将展示图层移除[self.layer removeFromSuperlayer];  }  else  {NSLog(@"没有扫描到数据");  }}

以上就是IOS二维码名片生成与读取的详细代码介绍,希望对大家的学习有所帮助。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

IOS生成与读取二维码名片

编程语言 网络编程
IOS生成与读取二维码名片

名片二维码生成软件如何使用

手机软件 应用软件
名片二维码生成软件如何使用

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

微信二维码支付怎么生成二维码

手机软件 应用软件
微信二维码支付怎么生成二维码

q群二维码名片如何生成 qq群二维码制作方法

手机软件 应用软件
q群二维码名片如何生成 qq群二维码制作方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

qq群二维码怎么生成 qq群怎么生成二维码

软件教程
qq群二维码怎么生成  qq群怎么生成二维码

ios原生二维码扫描

编程语言 网络编程
ios原生二维码扫描

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

$()JS小技巧

$()JS小技巧

SQL Server 2008 R2 应用及多服务器管理

SQL Server 2008 R2 应用及多服务器管理
下拉加载更多内容 ↓