美文网首页
CoreImage之生成二维码

CoreImage之生成二维码

作者: 投降又不会赢 | 来源:发表于2016-09-16 18:14 被阅读12次

生成二维码的步骤

学习自小码哥

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;
}
ps:顺便练习下markDown 能力有限 故不能解释太多 欢迎指教 如果您有好的markDown写法的链接 请留给我 万分感谢

相关文章

网友评论

      本文标题:CoreImage之生成二维码

      本文链接:https://www.haomeiwen.com/subject/ypdiettx.html