iOS 开发 iOS开发iOS进阶指南

二维码生成

2016-02-19  本文已影响213人  SuyChen

d网上有很多关于二维码生成和扫描的资料, 个人感觉都有不必要的复杂, 我们查资料都想着直接可以用是吧, 下面总结了关于二维码生成和扫描的代码,都是本人亲自确认无误的, 可放心使用, 因为怕读者看着乱所以把二维码的生成和扫描分成了两个部分来写.

接下来的代码是纯手工制造 不懂得可以问哦 反正我也不会告诉你的~

@property (nonatomic, strong) UIImage *QRImage;//创建一个image属性

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //初始化二维码图片
    [self QRImage1];
    UIImageView *QRImageView = [[UIImageView alloc] initWithImage:self.QRImage];
    QRImageView.frame = CGRectMake((self.view.frame.size.width - 250) / 2, (self.view.frame.size.height - 250) / 2, 250, 250);
    [self.view addSubview:QRImageView];

    
    UILabel *tipsLabel = [UILabel new];
    tipsLabel.textAlignment = NSTextAlignmentCenter;
    tipsLabel.text = @"扫一扫上方二维码,添加好友";
    tipsLabel.frame = CGRectMake(0, 100, self.view.frame.size.width, 30);
    [self.view addSubview:tipsLabel];


}
#pragma mark - 生产二维码 这里生成的二维码只是一个字符串 具体的效果还是要看实际情况

- (void)QRImage1
{
    //string -> data
    NSData *stringData = [@"jenny" dataUsingEncoding:NSUTF8StringEncoding];
    
    //使用CIFilter生成二维码QRCode
    CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    //设置内容和纠错级别
    [qrFilter setValue:stringData forKey:@"inputMessage"];
    [qrFilter setValue:@"M" forKey:@"inputCorrectionLevel"];
    
    //二维码的颜色
    UIColor *onColor = [UIColor blackColor];
    UIColor *offColor = [UIColor whiteColor];
    
    //上色
    CIFilter *colorFilter = [CIFilter filterWithName:@"CIFalseColor"
                                       keysAndValues:
                             @"inputImage",qrFilter.outputImage,
                             @"inputColor0",[CIColor colorWithCGColor:onColor.CGColor],
                             @"inputColor1",[CIColor colorWithCGColor:offColor.CGColor],
                             nil];
    
    CIImage *qrImage = colorFilter.outputImage;
    
    //绘制
    CGSize size = CGSizeMake(300, 300);
    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);
    
    _QRImage = codeImage;
    
}

<a href="http://www.jianshu.com/p/d31b89003142">二维码扫描链接</a>

上一篇下一篇

猜你喜欢

热点阅读