IOS原生生成二维码
一、二维码的生成
- 从iOS7开始集成了二维码的生成和读取功能
- 此前被广泛使用的ZBarSDK 目前不支持64位处理器,除此之外还有ZXingSDK也可以生成二维码
- 生成二维码的步骤
- 导入CoreImage框架
- 通过滤镜CIFilter生成二维码
- 二维码的内容(传统的条形码只能放数字)
- 纯文本
- 名片
- URL(可直接跳转网页)
二维码生成的具体代码
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
//创建过滤器
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
//过滤器恢复默认
[filter setDefaults];
//给过滤器添加数据
NSString *string = @"http://www.cnblogs.com/PSSSCode/";
//将NSString格式转化成NSData格式
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
[filter setValue:data forKeyPath:@"inputMessage"];
//获取二维码过滤器生成的二维码
CIImage *image = [filter outputImage];
//将获取到的二维码添加到imageview上
self.imageView.image =[UIImage imageWithCIImage:image];
从上图可以看出生成的二维码模糊不清晰,在上面代码块最后一步换成调用下面代码块中的方法即可
/**
* 根据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原生生成二维码相关推荐
- iOS原生实现二维码扫描
iOS原生实现二维码扫描 最近项目上需要开发扫描二维码进行签到的功能,主要用于开会签到的场景,所以为了避免作弊,我们再开发时只采用直接扫描的方式,并且要屏蔽从相册读取图片,此外还在二维码扫描成功签到时 ...
- iOS原生封装二维码、条形码扫描工具;生成、识别(彩色)二维码、条形码图片
二维码扫描在App中很常见的功能,之前都是用三方工具Zing.ZBar.后来Apple的AVFoundation也支持二维码扫描.生成,而且效率比三方库还要高.我把它封装成一个工具,这样使用起来十分方 ...
- iOS原生实现二维码拉近放大
http://www.cocoachina.com/ios/20180416/23033.html 2018-04-16 15:34 编辑: yyuuzhu 分类:iOS开发 来源:程序鹅 8 300 ...
- iOS相册图片二维码识别
前言:最近客户要求开发一个功能,类似微信长按图片识别图片中的二维码,一开始我使用了ZXingObjC,但是完成后被测试出有些二维码识别不了,所以只能另寻它法,之后更换为苹果系统自带的识别图片二维码的功 ...
- iOS 生成二维码 原生代码
- (void)viewDidLoad { [super viewDidLoad]; [self stringToQRcode]; } -(void)stringToQRcode { // 1.实例化 ...
- iOS中 扫描二维码/生成二维码详解
最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 指示根视图: ? 1 self.window.rootViewController = [[UINav ...
- IOS抖音短视频APP开发关于扫描二维码,并根据文本生成二维码
IOS抖音短视频APP开发关于扫描二维码,(根据光线强弱显示隐藏闪光灯)并根据文本生成二维码. WeakSelf; //IOS抖音短视频APP开发构建扫描样式视图 _scanView = [[WSLS ...
- IOS几种常见的实现扫描、生成二维码的方式(一、使用ZBar SDK)
最近项目中使用到扫描二维码的功能,要求还蛮多的,包括界面的定制,扫描灵敏度,使用的稳定性等等.于是,研究总结了一下IOS中几种扫描二维码的实现方式. 基本上我们的实现方法有三大途径:ZBar.ZXin ...
- iOS 生成二维码/条形码
级别:★★☆☆☆ 标签:「iOS CIFilter」「CIQRCodeGenerator」「CICode128BarcodeGenerator」「二维码加logo」 作者: Xs·H 审校: QiSh ...
最新文章
- 梳理vue双向绑定的实现原理
- [Overleaf] -带你初识Latex神器.快速上手.更新中...
- Web安全学习Week5
- data transformation python_Python数据分析(方睿)
- 清洗弹幕数据,去不相关的列和空值,MapReduce
- java aac rtp封装_分享一段H264视频和AAC音频的RTP封包代码
- python中单行注释采用的符号是什么_Python注释符号使用说明(多行注释和单行注释),用法,详解,攻略...
- 详解数字电视机顶盒的功能技术与应用3
- 图虫知识共享协议_100%避免图片版权侵权的方法(网站图片侵权赔款标准)
- 【粤教版必修二《信息系统与社会》】知识总结与题目分析
- RHCE-ansible第二次实验,通过ansible远程yum安装
- 远程文件下载/小电影下载
- IE浏览器在地址栏针对param直接输入中文导致乱码的解决方案
- 谷歌、百度循环多次翻译、语音下载python脚本
- godot mysql_Go 每日一库之 godotenv
- 云崽部署问题解决贴:关于Yunzai-Bot部署后可能遇到的QQ版本过低问题||和一个puppeteer Chromium启动失效问题
- Python GUI项目:古诗词鉴赏系统
- 并联串联混合的电压和电流_电流互感器知识:铭牌、接线图、重点问题详解
- MODIS MOD11A2地温产品
- 参会 | 探索新时代教育变革:理念与行动