//二维码生成 //UIImageView *theImageView = [[UIImageView alloc]init]; //[self.view addSubview:theImageView]; CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; [filter setDefaults]; NSData *data = [@"hello worold!" dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:data forKey:@"inputMessage"]; CIImage *outputImage = [filter outputImage]; CIContext *context = [CIContext contextWithOptions:nil]; CGImageRef cgImage = [context createCGImage:outputImage fromRect:[outputImage extent]]; UIImage *image = [UIImage imageWithCGImage:cgImage scale:1. orientation:UIImageOrientationUp]; NSLog(@"image QRCode : %@",NSStringFromCGSize(image.size)); // Resize without interpolating UIImage *resized = [self resizeImage:image withQuality:kCGInterpolationNone rate:5.0]; NSLog(@"%@",NSStringFromCGSize(resized.size)); UIImageView *theImageView =[[UIImageView alloc]initWithImage:resized]; theImageView.frame = CGRectMake(100, 200, 100, 100); [self.view addSubview:theImageView]; CGImageRelease(cgImage);
由于生成的二维码和图片非常小,所以使用方法放大了5倍
//Resize image - (UIImage *)resizeImage:(UIImage *)image withQuality:(CGInterpolationQuality)quality rate:(CGFloat)rate { UIImage *resized = nil; CGFloat width = image.size.width * rate; CGFloat height = image.size.height * rate; UIGraphicsBeginImageContext(CGSizeMake(width, height)); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetInterpolationQuality(context, quality); [image drawInRect:CGRectMake(0, 0, width, height)]; resized = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return resized; }
生成的结果: