iO7以上用CIFilter生成二维码
来源:互联网 发布:搬家有什么软件 编辑:程序博客网 时间:2024/05/16 08:02
.m控制器中的测试代码如下
#import "ViewController.h"// 添加库#import <CoreImage/CoreImage.h>@interface ViewController ()@property (weak, nonatomic) IBOutlet UIImageView *iv;@end@implementation ViewController- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // 1.实例化二维码滤镜 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];// name为固定的 // 2.恢复滤镜的默认属性 (因为滤镜有可能保存上一次的属性) [filter setDefaults]; // 3.将字符串转换成NSdata NSData *data = [@"http://www.baidu.com" dataUsingEncoding:NSUTF8StringEncoding]; // 4.通过KVC设置滤镜, 传入data, 将来滤镜就知道要通过传入的数据生成二维码 [filter setValue:data forKey:@"inputMessage"]; //key 为固定的 // 5.生成二维码 CIImage *outputImage = [filter outputImage]; UIImage *image = [UIImage imageWithCIImage:outputImage]; // 6.设置生成好得二维码到imageview上 self.iv.image = image; }@end
效果如下图(生成了一个指定链接的二维码)
注意:二维码的三个角尽量不要被中间的图片给遮住 见下图
说明:生成过程中可能会比较慢,因为生成的二维码是一个CIImage
,我们直接转换成UIImage
的话大小不好控制,所以使用下面方法返需要大小的UIImage
:
- (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size { CGRect extent = CGRectIntegral(image.extent); CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent)); // 创建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); // 保存bitmap到图片 CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef); CGContextRelease(bitmapRef); CGImageRelease(bitmapImage); return [UIImage imageWithCGImage:scaledImage];}用手机微信扫描即可跳转至指定的网页
效果如下图
说明:个人原创,未经许可不得转载。
0 0
- iO7以上用CIFilter生成二维码
- iO7以上CIFilter生成二维码
- 【iOS开发】iO7以上CIFilter生成二维码
- 【iOS开发】iO7以上CIFilter生成二维码(备忘)
- 【iOS开发】iO7以上CIFilter生成二维码(带二维码颜色变换)
- iO7以上CIFilter生成二维码(备忘) 此博文包含图片(2015-04-24 14:48:25)转载
- 用CIFilter生成QRCode二维码图片
- 通过CIFilter生成二维码
- 通过CIFilter快速生成二维码
- iOS 使用CIFilter生成二维码
- 利用CIFilter 自动生成二维码
- 使用CIFilter生成二维码并自定义
- iOS原生API生成二维码(CIFilter)
- 用CIFilter滤镜效果创建二维码
- iOS 7之后,使用CIFilter生成二维码图片
- ios 将url通过CIFilter滤镜生成条形码和二维码
- iOS开发中使用CIFilter生成二维码和条形码
- 二维码生成(CIFilter生成二维码,清晰度高的二维码,自定义颜色的二维码,带logo的二维码)
- 多线程下的单例
- Maven settings.xml中的Profile和Repository
- 个人对mvc mvvm的理解---代码结构 IOS
- android native 程序 bus error 案例分析
- Android判断横屏竖屏代码
- iO7以上用CIFilter生成二维码
- Android Activity生命周期以及Fragment生命周期的区别与分析
- 第二十三章 多项目集中权限管理及分布式会话
- 流水灯
- php.ini 配置上传大文件大小和响应时间
- C语言循环和递归两种方法求n的阶乘
- apache configure 参数详解
- Python程序员都会喜欢的6个库
- 第二十四章 在线会话管理