美文网首页
iOS开发-使用系统方法生成二维码

iOS开发-使用系统方法生成二维码

作者: 段佳欢 | 来源:发表于2018-03-21 16:53 被阅读17次

    一、iOS7之后,我们可以使用系统框架来生成二维码
    1、系统二维码主要通过CIFilter的对象来生成, 先导入这个类所在的框架:

    #import <CoreImage/CoreImage.h>
    

    2、生成二维码的UIImage

    + (UIImage*)createQRWithString:(NSString*)text QRSize:(CGSize)size QRColor:(UIColor*)qrColor bkColor:(UIColor*)bkColor
    {
        NSData *stringData = [text dataUsingEncoding: NSUTF8StringEncoding];
        
        //生成
        CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
        [qrFilter setValue:stringData forKey:@"inputMessage"];
        [qrFilter setValue:@"H" forKey:@"inputCorrectionLevel"];
        
        //上色
        CIFilter *colorFilter = [CIFilter filterWithName:@"CIFalseColor"
                                           keysAndValues:
                                 @"inputImage",qrFilter.outputImage,
                                 @"inputColor0",[CIColor colorWithCGColor:qrColor.CGColor],
                                 @"inputColor1",[CIColor colorWithCGColor:bkColor.CGColor],
                                 nil];
        
        //生成CIImage
        CIImage *qrImage = colorFilter.outputImage;
        
        //绘制
        CGImageRef cgImage = [[CIContext contextWithOptions:nil] createCGImage:qrImage fromRect:qrImage.extent];
        UIGraphicsBeginImageContext(size);
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSetInterpolationQuality(context, kCGInterpolationNone);
        CGContextScaleCTM(context, 1.0, -1.0);
        CGContextDrawImage(context, CGContextGetClipBoundingBox(context), cgImage);
        UIImage *codeImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        
        CGImageRelease(cgImage);
        
        return codeImage;
    }
    

    二、在二维码上添加其他图片
    1、在二维码上添加其他图片时,不能太大,否则会导致扫描不到二维码中的信息

    相关文章

      网友评论

          本文标题:iOS开发-使用系统方法生成二维码

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