iOS开发--二维码的生成
2016-06-14 21:08
531 查看
一.需要包含头文件
#import <CoreImage/CoreImage.h>
二.示例代码 -- 以下生成的二维码不够清晰 如图:
三.调用下面方法可以生成清晰的二维码图片,用的时候也可以给UIImage添加一个分类.这里没有抽取分类.如图:
#import <CoreImage/CoreImage.h>
二.示例代码 -- 以下生成的二维码不够清晰 如图:
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // 0.导入头文件#import <CoreImage/CoreImage.h> // 1.创建过滤器 -- 苹果没有将这个字符封装成常量 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; // 2.过滤器恢复默认设置 [filter setDefaults]; // 3.给过滤器添加数据(正则表达式/帐号和密码) -- 通过KVC设置过滤器,只能设置NSData类型 NSString *dataString = @"http://www.baidu.com"; NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding]; [filter setValue:data forKeyPath:@"inputMessage"]; // 4.获取输出的二维码 CIImage *outputImage = [filter outputImage]; // 5.显示二维码 self.imageView.image = [UIImage imageWithCIImage:outputImage]; }
三.调用下面方法可以生成清晰的二维码图片,用的时候也可以给UIImage添加一个分类.这里没有抽取分类.如图:
/** * 根据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]; }
相关文章推荐
- iOS 小知识 - #if , #ifdef , #ifndef.
- [置顶] 关于iOS socket都在这里了
- [置顶] iOS开发—XML/JSON数据解析
- NSTimer定时器
- iOS真机调试配置
- iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码)
- 自动计算cell高度
- TableView优化之高度缓存
- iOS 强制竖屏或是横屏 (代码设置后仍无效的问题)
- IOS通知和代理的用法以及优劣比较
- ios开发中的runloop
- iOS——socket适配ipv6,同时兼容ipv4
- iOS 10.0 更新点(开发者视角)
- ShareSDK 问题汇总
- iOS多线程简介
- iOS开发拓展篇——如何把项目托管到GitHub
- iOS objc_msgSend 野指针Crash 从 Log 提取 Crash 时 selector 的地址和名字并打印
- iOS objc_msgSend 野指针Crash 从 Log 提取 Crash 时 selector 的地址和名字并打印
- iOS根据标签不同长度内容按钮自动换行
- 获取iOS设备型号