一、二维码的生成

  • 从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原生生成二维码相关推荐

  1. iOS原生实现二维码扫描

    iOS原生实现二维码扫描 最近项目上需要开发扫描二维码进行签到的功能,主要用于开会签到的场景,所以为了避免作弊,我们再开发时只采用直接扫描的方式,并且要屏蔽从相册读取图片,此外还在二维码扫描成功签到时 ...

  2. iOS原生封装二维码、条形码扫描工具;生成、识别(彩色)二维码、条形码图片

    二维码扫描在App中很常见的功能,之前都是用三方工具Zing.ZBar.后来Apple的AVFoundation也支持二维码扫描.生成,而且效率比三方库还要高.我把它封装成一个工具,这样使用起来十分方 ...

  3. iOS原生实现二维码拉近放大

    http://www.cocoachina.com/ios/20180416/23033.html 2018-04-16 15:34 编辑: yyuuzhu 分类:iOS开发 来源:程序鹅 8 300 ...

  4. iOS相册图片二维码识别

    前言:最近客户要求开发一个功能,类似微信长按图片识别图片中的二维码,一开始我使用了ZXingObjC,但是完成后被测试出有些二维码识别不了,所以只能另寻它法,之后更换为苹果系统自带的识别图片二维码的功 ...

  5. iOS 生成二维码 原生代码

    - (void)viewDidLoad { [super viewDidLoad]; [self stringToQRcode]; } -(void)stringToQRcode { // 1.实例化 ...

  6. iOS中 扫描二维码/生成二维码详解

    最近大家总是问我有没有关于二维码的demo,为了满足大家的需求,特此研究了一番,希望能帮到大家! 指示根视图: ? 1 self.window.rootViewController = [[UINav ...

  7. IOS抖音短视频APP开发关于扫描二维码,并根据文本生成二维码

    IOS抖音短视频APP开发关于扫描二维码,(根据光线强弱显示隐藏闪光灯)并根据文本生成二维码. WeakSelf; //IOS抖音短视频APP开发构建扫描样式视图 _scanView = [[WSLS ...

  8. IOS几种常见的实现扫描、生成二维码的方式(一、使用ZBar SDK)

    最近项目中使用到扫描二维码的功能,要求还蛮多的,包括界面的定制,扫描灵敏度,使用的稳定性等等.于是,研究总结了一下IOS中几种扫描二维码的实现方式. 基本上我们的实现方法有三大途径:ZBar.ZXin ...

  9. iOS 生成二维码/条形码

    级别:★★☆☆☆ 标签:「iOS CIFilter」「CIQRCodeGenerator」「CICode128BarcodeGenerator」「二维码加logo」 作者: Xs·H 审校: QiSh ...

最新文章

  1. 梳理vue双向绑定的实现原理
  2. [Overleaf] -带你初识Latex神器.快速上手.更新中...
  3. Web安全学习Week5
  4. data transformation python_Python数据分析(方睿)
  5. 清洗弹幕数据,去不相关的列和空值,MapReduce
  6. java aac rtp封装_分享一段H264视频和AAC音频的RTP封包代码
  7. python中单行注释采用的符号是什么_Python注释符号使用说明(多行注释和单行注释),用法,详解,攻略...
  8. 详解数字电视机顶盒的功能技术与应用3
  9. 图虫知识共享协议_100%避免图片版权侵权的方法(网站图片侵权赔款标准)
  10. 【粤教版必修二《信息系统与社会》】知识总结与题目分析
  11. RHCE-ansible第二次实验,通过ansible远程yum安装
  12. 远程文件下载/小电影下载
  13. IE浏览器在地址栏针对param直接输入中文导致乱码的解决方案
  14. 谷歌、百度循环多次翻译、语音下载python脚本
  15. godot mysql_Go 每日一库之 godotenv
  16. 云崽部署问题解决贴:关于Yunzai-Bot部署后可能遇到的QQ版本过低问题||和一个puppeteer Chromium启动失效问题
  17. Python GUI项目:古诗词鉴赏系统
  18. 并联串联混合的电压和电流_电流互感器知识:铭牌、接线图、重点问题详解
  19. MODIS MOD11A2地温产品
  20. 参会 | 探索新时代教育变革:理念与行动

热门文章

  1. 【社招】【邮储总行】软件研发中心2022年社招开发专场
  2. 学游戏建模,怎么能没有几款上手的软件,8款超好用的3D建模软件
  3. 细雨湿衣看不见 闲花落地听无声
  4. 人脸识别系列(十八):MobileFaceNets
  5. jQuery源码解析(架构与依赖模块)
  6. latex输入单双引号
  7. Installation Oracle11gR2 RAC on SuSE Linux Enterprise Server 11
  8. 基于cling2.0的Android DLNA/Upnp客户端基本开发成功
  9. 微信小程序进行地图导航,地图展示功能
  10. Win10 下安装PhotoShop CS6