美文网首页
二维码生成

二维码生成

作者: 咔咔尼亜 | 来源:发表于2019-02-15 10:00 被阅读0次

    1. 二维码生成

    -(UIImage*)getQrImageWithString:(NSString*)string
    {
        CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
        [filter setDefaults];
        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
        [filter setValue:data forKey:@"inputMessage"];        //通过kvo方式给一个字符串,生成二维码
        [filter setValue:@"H" forKey:@"inputCorrectionLevel"];//设置二维码的纠错水平,越高纠错水平越高,可以污损的范围越大
        
        return [UIImage imageWithCIImage:[filter outputImage]];
    }
    

    iOS提供了生成二维码的方法,但是生成的二维码图片是CIImage对象,因此要转成UIImage对象。另外特别注意的地方是将image用UIImageview显示的时候二维码模糊的问题不是二维码图片导致的,而是UIimageview渲染的时候导致的,这个问题可以通过设置UIImageview的layer属性的magnificationFilter属性值为nearest解决。

    2.关于CIFilter

    CIFilter是一个滤镜,里面有各种滤镜,创建方法如下

    + (nullable CIFilter *) filterWithName:(NSString *) name
    

    想要知道filter的name 通过下面的方法获取

    + (NSArray<NSString *> *)filterNamesInCategory:(nullable NSString *)category
    category的值在这个方法的说明文档里有就是(就是一些常量字符串)
    
    1. kCICategoryDistortionEffect //失真效果
    2. kCICategoryGeometryAdjustment //几何调整
    3. kCICategoryCompositeOperation //复合操作
    4. kCICategoryHalftoneEffect //半色调效果
    5. kCICategoryColorAdjustment //颜色调整
    6. kCICategoryColorEffect //颜色效果
    7. kCICategoryTransition //翻转
    8. kCICategoryTileEffect //瓦片效果
    9. kCICategoryGenerator //生成器
    10. kCICategoryReduction //削减
    11. kCICategoryGradient //梯度
    12. kCICategoryStylize //风格
    13. kCICategorySharpen //锐化
    14. kCICategoryBlur //模糊
    15. kCICategoryVideo //视频
    16. kCICategoryStillImage //静态图片
    17. kCICategoryInterlaced //交叉
    18. kCICategoryNonSquarePixels //非方形像素
    19. kCICategoryHighDynamicRange //高动态范围
    20. kCICategoryBuiltIn //内建
    21. kCICategoryFilterGenerator //滤镜生成器
      调用方法
    NSLog(@"catogerys====%@",[CIFilter filterNamesInCategory:kCICategoryGenerator]);
    打印结果为
    catogerys====(
        CIAttributedTextImageGenerator,
        CIAztecCodeGenerator,
        CIBarcodeGenerator,
        CICheckerboardGenerator,
        CICode128BarcodeGenerator,
        CIConstantColorGenerator,
        CILenticularHaloGenerator,
        CIMeshGenerator,
        CIPDF417BarcodeGenerator,
        CIQRCodeGenerator,
        CIRandomGenerator,
        CIStarShineGenerator,
        CIStripesGenerator,
        CISunbeamsGenerator,
        CITextImageGenerator
    )
    

    获取到滤镜的名字之后可以

    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; //生成filter实例
    

    CIfilter的属性设置主要是通过kvc实现,属性名的获取可以通过只读属性inputKeys和outputKeys获取。

    相关文章

      网友评论

          本文标题:二维码生成

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