OC_UIKit

通过关键字生成二维码

2017-06-23  本文已影响3人  忻凯同学

/**

    通过关键字生成二维码

    @param keyword keyword

    @param size 生成二维码大小

    @return UIImage

*/

- (UIImage *)encodeQRImageWithKeyword:(NSString *)keyword size:(CGSize)size {

          UIImage *codeImage = nil;

          NSData *stringData = [keyword dataUsingEncoding:NSUTF8StringEncoding];

          //生成

          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;

          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);

          codeImage = UIGraphicsGetImageFromCurrentImageContext();

          UIGraphicsEndImageContext();

          CGImageRelease(cgImage);

          return codeImage;

}

上一篇下一篇

猜你喜欢

热点阅读