生成二维码的步骤
学习自小码哥
1、创建生成二维码的滤镜实例
//创建滤镜对象
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
2、初始化滤镜
//恢复滤镜默认属性(有可能是上次使用的滤镜对象)
[filter setDefaults];
3、输入数据
//因为输入的数据对象为NSData类型
NSString *inputS = @"哈哈哈";
NSData *inputD = [inputS dataUsingEncoding:NSUTF8StringEncoding];
//设置输入数据 输入数据的键一定要是inputMessage错一个大小写都不行
[filter setValue:inputD forKey:@"inputMessage"];
4、获取输出高清图
//获取输出的CIImage 默认大小为 23X23
CIImage * outputImage = [filter outputImage];
//改变大小 否则图片会模糊
outputImage = [outputImage imageByApplyingTransform:CGAffineTransformMakeScale(5, 5)];
UIImage * image = [UIImage imageWithCIImage:outputImage];

--------------------------------------分割线
关于自定义二维码
1、生成的二维码滤镜可以设置纠错率 在设置输入数据完成之后设置滤镜的纠错率(ps:在二维码中添加图片会遮挡部分内容)
//设置滤镜的纠错率等级 L 修正7%的字码 M %15 Q %25 H %30 一般为M(ps:等级越高扫描(识别)时间越长)
//inputCorrectoinLevelc 纠错率
[filter setValue:@"H" forKey:@"inputCorrectionLevel"];
2、在二维码中间添加图片(ps:注意不要遮挡上图中的三个黑色方块) 该方法是传入俩个UIImage对象来合成一张图片
- (UIImage*)getNewImage:(UIImage*)image centerImage:(UIImage*)centerImage{
//开启位图上下文
CGSize size = image.size;
UIGraphicsBeginImageContext(size);
//绘制大图片
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
//绘制前景图片
CGFloat width = 40;
CGFloat height = 40;
CGFloat x = (size.width - width) * 0.5;
CGFloat y = (size.height - height) * 0.5;
[centerImage drawInRect:CGRectMake(x, y, width, height)];
//取出结果图片
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
//关闭上下文
UIGraphicsEndImageContext();
//返回图片
return resultImage;
}
网友评论