蓝色地方代表的纠错区域,可以显示纠错级别
黄色代表我们的数据区域,可以显示我们的数据
黑色区域代表用定位,把数据和纠错划定在一范围
二维码存储的数据是字符串。
我们目前开发主要应用在哪方面
1、微信 信息的获取
2、网页跳转(目前应用最为广泛,通过跳转网页,获得更多信息)
3、广告推送(二维码中内藏一张图片,纠错能力低)
4、手机电商(用于记录你下单的信息)
5、优惠促销
使用库
1、Zxing
优点
扫描识别率高
缺点
不能扫描条形码
集成复杂
2、Zbar(一般使用此第三方库)
条形码容错 可以达到30%
优点
集成速度快,难度低
可以扫描条形码
缺点
识别率差(也不差太多)
示例
1 . 生成二维码
使用第三方库libqrencode生成二维码
代码如下:
- (IBAction)createBarCodeBtnClicked:(id)sender {
//1.生产二维码 导入库 libqrencode
//2.导入头文件#import "QRCodeGenerator.h"
//3.把一个文本字符串转化为 二维码图片
/**
* 第一个参数 要转化为二维码的字符串
2 生产二维码的尺寸大小
*/
//转为 二维码的图片
UIImage *image = [QRCodeGenerator qrImageForString:self.contentTF.text imageSize:300];
self.outImgV.image = image;
//保存到相册 后面三个参数 可以什么都不写
//UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
//第一个参数是UIImage 对象
//第二个参数是 任意对象地址
//第三个参数是 保存之后 会让 第二个参数调用 第三个参数对应的方法
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
}
//保存图片之后 会调用 结果
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
if (error) {
NSLog(@"保存失败:%@",error);
}else{
NSLog(@"保存成功!");
}
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[[UIApplication sharedApplication].keyWindow endEditing:YES];
}
使用第三方库ZBar进行二维码的生成和扫描,其中需要导入一些系统库文件
示例代码如下:
- (IBAction)scan:(id)sender {
//ZCZBarViewController 是扫描控制器类
ZCZBarViewController*vc=[[ZCZBarViewController alloc]initWithIsQRCode:NO Block:^(NSString *result, BOOL isFinish) {
if (isFinish) {
NSLog(@"最后的结果%@",result);
self.resultLabel.text=result;
}
}];
//当前视图推出ZCZBarViewController控制器,会显示扫描视图,选择进行扫描
[self presentViewController:vc animated:YES completion:nil];
}
- (IBAction)createBarCode:(id)sender {
[ZCZBarViewController createImageWithImageView:self.outImgV String:self.inputTextView.text Scale:4];
}