iOS CIQRCodeGenerator(二维码生成器)的使用和参数介绍

iOS CIQRCodeGenerator(二维码生成器)的使用和参数介绍,第1张

//MARK:生成一个二维码图片
- (CIImage *)getQRCode:(NSString *)constent{
    //创建二维码滤镜
    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    [filter setDefaults];
    NSData *strData = [constent dataUsingEncoding:NSUTF8StringEncoding];
    [filter setValue:strData forKeyPath:@"inputMessage"];
    [filter setValue:@"M" forKeyPath:@"inputCorrectionLevel"];
    //生成二维码
    CIImage *outputImage = [filter outputImage];
    
    return outputImage;
}


//MARK:重新生成固定大小的二维码图片
+ (UIImage *)resizeQRCodeImage:(CIImage *)image withSize:(CGFloat)size{
    CGRect extent = CGRectIntegral(image.extent);
    CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));
    
    size_t width = CGRectGetWidth(extent) * scale;
    size_t height = CGRectGetHeight(extent) * scale;

    CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceGray();
    CGContextRef contextRef = CGBitmapContextCreate(nil, width, height, 8, 0, colorSpaceRef, (CGBitmapInfo)kCGImageAlphaNone);
    CIContext *context = [CIContext contextWithOptions:nil];
    CGImageRef imageRef = [context createCGImage:image fromRect:extent];
    CGContextSetInterpolationQuality(contextRef, kCGInterpolationNone);
    CGContextScaleCTM(contextRef, scale, scale);
    CGContextDrawImage(contextRef, extent, imageRef);
    CGImageRef imageRefResized = CGBitmapContextCreateImage(contextRef);
    //Release
    CGContextRelease(contextRef);

    CGImageRelease(imageRef);
    
    CGColorSpaceRelease(colorSpaceRef);

    UIImage *theImage = [UIImage imageWithCGImage:imageRefResized];
    
    CFRelease(imageRefResized);
    
    return theImage;
}

输出图像的标准:ISO/IEC 18004:2006标准

inputMessage:二维码的内容

inputCorrectionLevel:二维码的容错率 一共可以分为4个级别,默认是 M;

L:7%

M:15%

Q:25%

H:30%    

容错率表示,二维码最多被遮挡多少面积依旧能被识别。 所以我们可以自己制作带图标的二维码,生成普通的二维码直接在任意位置贴上想要的图标即可,只要图标面积不超过容错率上限都可以被识别。  

                                                                                                                                                   

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/996661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存