这篇博客将会介绍二维码的生成。 由于没有什么东西值得长篇大论的,所以这里我就通过代码的实现介绍二维码。第一部分第一部分是二维码的简单生成没有其他重点介绍。效果图代码部分//// ViewController.m// CX 二维码生成//// Created by ma c o ...
这篇博客将会介绍二维码的生成。
由于没有什么东西值得长篇大论的,所以这里我就通过代码的实现介绍二维码。
第一部分
第一部分是二维码的简单生成没有其他重点介绍。
效果图
代码部分
//// ViewController.m// CX 二维码生成//// Created by ma c on 16/4/12.// Copyright © 2016年 bjsxt. All rights reserved.//#import "ViewController.h"#import <CoreImage/CoreImage.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; }- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //创建过滤器 CIFilter * filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; //恢复默认设置 [filter setDefaults]; //给过滤器添加数据 NSString * str = @"旭宝爱吃鱼";//这里的文本可以是URL NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:data forKey:@"inputMessage"]; //输出获取的二维码 CIImage * image = [filter outputImage]; //显示二维码 UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20, 100, 100)]; imageView.image = [UIImage imageWithCIImage:image]; [self.view addSubview:imageView]; }@end
代码部分
//// ViewController.m// CX 二维码生成//// Created by ma c on 16/4/12.// Copyright © 2016年 bjsxt. All rights reserved.//#import "ViewController.h"#import <CoreImage/CoreImage.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; }- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //创建过滤器 CIFilter * filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; //恢复默认设置 [filter setDefaults]; //给过滤器添加数据 NSString * str = @"旭宝爱吃鱼";//这里的文本可以是URL NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:data forKey:@"inputMessage"]; //输出获取的二维码 CIImage * image = [filter outputImage]; //显示二维码 UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(20, 20, 100, 100)]; imageView.image = [self createNonInterpolatedUIImageFormCIImage:image withSize:200]; [self.view addSubview:imageView];}/** * 根据CIImage生成指定大小的UIImage * * @param image CIImage * @param size 图片宽度 */- (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size{ CGRect extent = CGRectIntegral(image.extent); CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent)); // 1.创建bitmap; size_t width = CGRectGetWidth(extent) * scale; size_t height = CGRectGetHeight(extent) * scale; CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray(); CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone); CIContext *context = [CIContext contextWithOptions:nil]; CGImageRef bitmapImage = [context createCGImage:image fromRect:extent]; CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone); CGContextScaleCTM(bitmapRef, scale, scale); CGContextDrawImage(bitmapRef, extent, bitmapImage); // 2.保存bitmap到图片 CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef); CGContextRelease(bitmapRef); CGImageRelease(bitmapImage); return [UIImage imageWithCGImage:scaledImage];}@end
原标题:IOS 二维码生成
关键词:IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。