二维码的介绍
二维码是用特定的几何图形来记录信息
在之前,常用的二维码开发框架有:ZXing和ZBarSDK
苹果从iOS7开始集成了二维码的生成和读取功能,并且之前的框架不支持64位,因此目前只是用苹果的框架即可
二维码的生成
二维码的生成就是将固定的信息生成对应的二维码
生成二维码的步骤:
(1)。导入CoreImage框架
(2)。通过滤镜CIFilter生成二维码
《1》。创建滤镜对象
《2》。设置滤镜的默认设置
《3》。给滤镜设置数据(KVC)
《4》。获取生成的二维码图形
二维码的生成(此列是根据一段文本生成一个二维码的图片)
1.1 创建用于生成二维码滤镜
CIFilter *qrFilter = [CIFilter filterWithName:@“CIQRCodeGenerator”];
NSData *messageData = [@“最近好吗?” dataUsingEncoding:NSUTF8StringEncoding];
// 1.2 设置二维滤镜的输入
[qrFilter setValue:messageData forKey:@“inputMessage”];
// 1.3取出图片
CIImage *ciImage = qrFilter.outputImage;
// 1.4 放大图片
ciImage = [ciImage imageByApplyingTransform:CGAffineTransformMakeScale(8, 8)];
#pragma mark - 修改二维码的前景色和背景色
// 修改二维码的前景色和背景色,当你修改了前景色或背景色都会降低图片的识别度
CIFilter *falseColorFilter = [CIFilter filterWithName:@“CIFalseColor”];
// inputImage, 图片
// inputColor0, 前景颜色
// inputColor1 背景色
// 这三个参数都是CoreImage中的对象
// NSLog(@“%@”,falseColorFilter.inputKeys);
// 图片
[falseColorFilter setValue:ciImage forKey:@“inputImage”];
// 前景色
[falseColorFilter setValue:[CIColor colorWithRed:1 green:0 blue:0] forKey:@“inputColor0”];
// 背景色
[falseColorFilter setValue:[CIColor colorWithRed:0 green:0 blue:1] forKey:@“inputColor1”];
// 取出滤镜中的图片
ciImage = falseColorFilter.outputImage;
// 二维码上面添加头像,也会降低二维码的识别度
UIImage *qrImage = [UIImage imageWithCIImage:ciImage];
#pragma mark - 在原来的二维码的图片上画一个头像
// 在原来的二维码的图片上画一个头像
// 开启图片上下文
UIGraphicsBeginImageContext(qrImage.size);
// 绘制二维码图片
[qrImage drawInRect:CGRectMake(0, 0, qrImage.size.width, qrImage.size.height)];
// 绘制头像
UIImage *headImage = [UIImage imageNamed:@“cang”];
CGFloat headW = qrImage.size.width * 0.2;
CGFloat headH = qrImage.size.height * 0.2;
CGFloat headX = (qrImage.size.width - headW) * 0.5;
CGFloat headY = (qrImage.size.height - headH) * 0.5;
[headImage drawInRect:CGRectMake(headX, headY, headW, headH)];
// 从图片上下文中取出图片
qrImage = UIGraphicsGetImageFromCurrentImageContext();
// 关闭图片上下文
UIGraphicsEndImageContext();
// 1.6 把CIImage转换为UIImage
self.imageView.image = qrImage;
效果图:
生成二维码 带 中间icon ,并且带有阴影效果
[objc] view plain copy print?
//指定UIImageView 的 rect 大小
CGRect rect = CGRectMake(10, 10, [UIScreen mainScreen].bounds.size.width - 20, [UIScreen mainScreen].bounds.size.width - 20);
//然后,返回一个QRCode图片,通过指定大小的rect和数据字符串,中间带一个icon, 并且有阴影效果
UIImage *center = [UIImage imageNamed:@“centericon”];
UIImageView *myImage = [[[ZRQRCodeViewController alloc] init] generateQuickResponseCodeWithFrame:rect dataString:@“https://www.baidu.com” centerImage:center needShadow:YES];
1、生成原理 通过一个类CIFilter(滤镜)包含二维码中所有的信息,然后生成一张二维码图片 二维码中间的icon(头像),是通过在生成的图片上添加一张图片实现的
2、生成步骤 创建滤镜 初始化滤镜 添加二维码信息 获取生成的二维码图片 将二维码图片展示出来
评论
查看更多