二维码生成(利用iOS CoreImage框架)
2016-02-07 13:11
543 查看
// // ViewController.m #import "ViewController.h" #import <CoreImage/CoreImage.h> //导入框架 @interface ViewController () @property (weak, nonatomic) IBOutlet UIImageView *qrcodeView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; // 2、恢复滤镜的默认属性 [filter setDefaults]; // 3、设置内容 NSString *str = @"这是一个二维码的生成结果"; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; // 使用KVO设置属性 [filter setValue:data forKey:@"inputMessage"]; // 4、获取输出文件 CIImage *outputImage = [filter outputImage]; // 5、显示二维码 UIImage *image =[self createNonInterpolatedUIImageFormCIImage:outputImage withSize:500.0f]; self.qrcodeView.image =image; } - (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的几个特效实现思路
- 从web页面打开iOS应用
- ios如何在#import方面提升编译性能
- ios9 URL Schemes列为白名单,才可正常检查其他应用是否安装
- IOS开发的哪些异常之异常断点
- iOS开发之静态库.a的制作教程
- IOS textField限制字节长度
- iOS学习之flappyBird游戏的实现
- 灵魂有香气的女子IOS版本APP,近期将考虑开放源代码
- 项目总结二:龙图OA项目总结
- iOS中怎样加入自己定义的字体
- 深入理解iOS API系列(一) textField:shouldChangeCharactersInRange:replacementString:
- iOS-对话框的应用
- iOS 限制textField字节长度
- iOS 内存管理
- iOS--多线程开发
- iOS开发系列--数据存取
- iOS开发系列--地图与定位
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总