博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS开发--二维码的生成
阅读量:7174 次
发布时间:2019-06-29

本文共 2105 字,大约阅读时间需要 7 分钟。

一.需要包含头文件

#import <CoreImage/CoreImage.h>

二.示例代码 -- 以下生成的二维码不够清晰 如图:

1 - (void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event{ 2 3 // 0.导入头文件#import
4 5 // 1.创建过滤器 -- 苹果没有将这个字符封装成常量 6 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; 7 8 // 2.过滤器恢复默认设置 9 [filter setDefaults];10 11 // 3.给过滤器添加数据(正则表达式/帐号和密码) -- 通过KVC设置过滤器,只能设置NSData类型12 NSString *dataString = @"http://www.baidu.com";13 NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];14 [filter setValue:data forKeyPath:@"inputMessage"];15 16 // 4.获取输出的二维码17 CIImage *outputImage = [filter outputImage];18 19 // 5.显示二维码20 self.imageView.image = [UIImage imageWithCIImage:outputImage];21 }

三.调用下面方法可以生成清晰的二维码图片,用的时候也可以给UIImage添加一个分类.这里没有抽取分类.如图:

1 /** 2  *  根据CIImage生成指定大小的UIImage 3  * 4  *  @param image CIImage 5  *  @param size  图片宽度 6  */ 7 - (UIImage *)createNonInterpolatedUIImageFormCIImage:(CIImage *)image withSize:(CGFloat) size 8 { 9     CGRect extent = CGRectIntegral(image.extent);10     CGFloat scale = MIN(size/CGRectGetWidth(extent), size/CGRectGetHeight(extent));11     12     // 1.创建bitmap;13     size_t width = CGRectGetWidth(extent) * scale;14     size_t height = CGRectGetHeight(extent) * scale;15     CGColorSpaceRef cs = CGColorSpaceCreateDeviceGray();16     CGContextRef bitmapRef = CGBitmapContextCreate(nil, width, height, 8, 0, cs, (CGBitmapInfo)kCGImageAlphaNone);17     CIContext *context = [CIContext contextWithOptions:nil];18     CGImageRef bitmapImage = [context createCGImage:image fromRect:extent];19     CGContextSetInterpolationQuality(bitmapRef, kCGInterpolationNone);20     CGContextScaleCTM(bitmapRef, scale, scale);21     CGContextDrawImage(bitmapRef, extent, bitmapImage);22     23     // 2.保存bitmap到图片24     CGImageRef scaledImage = CGBitmapContextCreateImage(bitmapRef);25     CGContextRelease(bitmapRef);26     CGImageRelease(bitmapImage);27     return [UIImage imageWithCGImage:scaledImage];28 }

 

转载于:https://www.cnblogs.com/gchlcc/p/5585482.html

你可能感兴趣的文章
GridView 事件_ZZ
查看>>
HDU1754I Hate It(线段树)
查看>>
IOS-WebViewJavascriptBridge使用说明
查看>>
最大流最小割定理证明
查看>>
蚂蚁金服开发文档中心
查看>>
《Redis设计与实现》之第九章:数据库
查看>>
10月10日学习内容整理:socketserver模块,ftp作业讲解
查看>>
Swagger2 模拟请求头
查看>>
混淆矩阵(Confusion matrix)的原理及使用(scikit-learn 和 tensorflow)
查看>>
20155319 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
查看>>
从第一行代码开始开发区块链(一)
查看>>
Struts2整合Hibernate3实现用户登录功能
查看>>
10.21html 标签
查看>>
silverlight 乐动魔方 实战十 .
查看>>
简单的算术题。
查看>>
黎活明8天快速掌握android视频教程--18_在SQLite中使用事务
查看>>
jdbc
查看>>
心理学效应:阿基米德与酝酿效应
查看>>
Linux之/etc/inittab文件
查看>>
Angular JS 作用域和数据绑定
查看>>