iOS开发——高级篇——二维码的生产和读取


一、二维码的生成


从iOS7开始集成了二维码的生成和读取功能
此前被广泛使用的zbarsdk目前不支持64位处理器

生成二维码的步骤:
导入CoreImage框架
通过滤镜CIFilter生成二维码

二维码的内容(传统的条形码只能放数字):
纯文本
名片
URL

 

// 1. 实例化二维码滤镜
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
// 2. 恢复滤镜的默认属性
[filter setDefaults];// 3. 将字符串转换成NSData
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];// 4. 通过KVO设置滤镜inputMessage数据
[filter setValue:data forKey:@"inputMessage"];// 5. 获得滤镜输出的图像
CIImage *outputImage = [filter outputImage];// 6. 将CIImage转换成UIImage,并放大显示
return [UIImage imageWithCIImage:outputImage scale:20.0 orientation:UIImageOrientationUp];

 

二、读取二维码


读取二维码需要导入AVFoundation框架
利用摄像头识别二维码中的内容(模拟器不行)

输入(摄像头)
由会话将摄像头采集到的二维码图像转换成字符串数据
输出(数据)
由预览图层显示扫描场景

// 1. 实例化拍摄设备
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
// 2. 设置输入设备
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
// 3. 设置元数据输出
// 3.1 实例化拍摄元数据输出
AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];
// 3.3 设置输出数据代理
[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
// 4. 添加拍摄会话
// 4.1 实例化拍摄会话
AVCaptureSession *session = [[AVCaptureSession alloc] init];
// 4.2 添加会话输入
[session addInput:input];
// 4.3 添加会话输出
[session addOutput:output];
// 4.3 设置输出数据类型,需要将元数据输出添加到会话后,才能指定元数据类型,否则会报错
[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];// 5. 视频预览图层
// 5.1 实例化预览图层
AVCaptureVideoPreviewLayer *preview = [AVCaptureVideoPreviewLayer layerWithSession:_session];
preview.videoGravity = AVLayerVideoGravityResizeAspectFill;
preview.frame = self.view.bounds;
// 5.2 将图层插入当前视图
[self.view.layer insertSublayer:preview atIndex:100];
self.previewLayer = preview;// 6. 启动会话
[_session startRunning];

 

转载于:https://www.cnblogs.com/chglog/p/4872624.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 地址_python 解析地址 | 学步园

socekt.getaddrinfo的返回值介绍family: 表示socket使用的协议簇。常用的协议簇包括AF_UNIX(本机通信)/AF_INET(TCP/IP协议簇中的IPv4协议)/AF_INET6(TCP/IP协议簇中的IPv4协议)。在python的socket包中,用1表示AF_UNIX,2表示AF_INET,10表示AF…

html 微信发送给朋友,H5链接分享给微信好友,显示标题、描述、缩略图

效果展示image.png1.公众号设置1.1公众号需要经过认证,具有分享接口功能image.png1.2填写正确的域名(域名需要经过备案)image.png1.3 保存好AppID、AppSecret、设置好ip白名单(非常重要)image.png2.php代码(需要有php环境下,放到域名目录下)2.1展示下目录…

python怎么创建变量_python怎么创建变量

变量(variable)是学习python初始时,就会接触到的一个新的知识点,也是一个需要熟知的概念。python是一种动态类型语言,在赋值的执行中可以绑定不同类型的值,这个过程叫做变量赋值操作,赋值同时确定了变量类型。在python…

nginx 学习笔记【持续更新...】

1.如果在安装过程中出现以下错误 需要安装pcre库 解决方案:yum install pcre 2.如果nginx启动提示端口被占用,则停止该端口的服务再启动nginx,一般为httpd服务 解决方案:service httpd stop 3.nginx下php编译 ./configure --prefix/usr/local/fastphp …

python问号表达式_python中的问号表达式

我们知道C语句中存在问号表达式,例如下面:1a2>1? 10: -10;那么,Python脚本语言中是否也存在类似的问号表达式呢?答案是肯定的。而且存在两种方式。方式1:使用if else实现如下例:1b 5a 2 if b 4 else 1p…

计算机入门在线阅读,电脑入门基础教程..doc

PAGEPAGE 8大学计算机基础实验指导书A班2013年9月实验一 windows基本操作、系统环境一、实验目的1.熟悉Windows的基本知识和基本操作。2.熟悉Windows的程序管理。3.熟悉“Windows资源管理器”和“我的电脑”的使用。4.熟悉文件和文…

efcore 实体配置_创建并配置模型

创建并配置模型Creating and configuring a model10/13/2020本文内容Entity Framework 使用一组约定基于实体类的形状构建模型。Entity Framework uses a set of conventions to build a model based on the shape of your entity classes. 可指定其他配置以补充和/或替代约定的…

python怎么放音乐_python怎么播放音乐

Python播放音乐要使用pygame模块 首先安装pygame模块:pip install pygame 方法实现:def play_music(self): filepath r"E:\music\消愁.mp3"; pygame.mixer.init() # 加载音乐 pygame.mixer.music.load(filepath) pygame.mixer.music.play(sta…

sprintf_s与_snprintf与_snprintf_s

MSDN页面分别如下: spirntf_s: http://msdn.microsoft.com/zh-cn/library/ce3zzk1k%28VS.80%29.aspx _snprintf: http://msdn.microsoft.com/zh-cn/library/2ts7cx93%28vVS.90%29.aspx _snprintf_s: http://msdn.microsoft.com/zh-cn/library/f30dzcf6.aspx 三个页面…

git ssh配置文件 服务器_git登录ssh服务器

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":6,"count":6}]},"card":[{"des":"云服务器 ECS(Elastic Compute Service)是一…

怎么用计算机打分数,电脑excel中分数怎么打出来(图解excel分数输入法)

在日常工作中,我们经常需要在excel中输入分数,默认情况下,当我们直接输入分数,比如输入“9/16” 回车后,会发现系统显示的却是日期数据,如下图所示,那么分数该怎么输入呢?今天就来和…

python终止线程_Python里怎么终止一个线程

Python用sleep停止一个线程的运行,而不影响主线程的运行,案例代码如下: from threading import *import timeclass MyThread(Thread): def run (self): self.ifdo True; while self.ifdo: print I am running... time.sleep(2) def stop (se…

C#中的多线程

1简介及概念 C# 支持通过多线程并行执行代码,线程有其独立的执行路径,能够与其它线程同时执行。 一个 C# 客户端程序(Console 命令行、WPF 以及 Windows Forms)开始于一个单线程,这个线程(也称为“主线程”…

word 7桌面上的计算机图标是,怎么设置win7系统桌面图标都变成word图标的处理办法...

随着电脑的使用率越来越高,我们有时候可能会遇到win7系统桌面图标都变成word图标问题,如果我们遇到了win7系统桌面图标都变成word图标的问题,要怎么处理win7系统桌面图标都变成word图标呢?我们只用  双击打开桌面上的计算机文件…

edge浏览器什么相当于ie的中低_Microsoft Edge浏览器

Microsoft Edge浏览器是微软与Win10同步推出的一款新版浏览器。Microsoft Edge浏览器功能很全面,不仅内置微软Contana,可以为用户带来更多人性化的服务,而且Microsoft Edge浏览器还有着支持插件扩展、网页阅读注释等特色功能,为用…

python3文件的编码类型是什么_python3.x - 怎么查看某个文件的编码方式?python

问 题 python的确很赞,但是编码这个问题真的太尿性了。。。 现在我有一个文件,不论他的编码方式是什么,我都想把它转化成utf-8的格式。我的想法是先读取文件内容,保存到data变量中去,然后再以utf-8的格式写入文件。 但…

STL中 map 和 multimap

1. 所在头文件<map>. 命名空间std, 声明如下: 1 namespace std{2 template <class Key,class T,3 class Compare less<Key>,4 class Allocator allocator<pair<const Key,T> > >5 class map;6 templa…

你每隔多久使用计算机上网查找资料英文,牛津英语8B Unit3导学案

43. Each of the students should ___________(treat) equally[平等地] by our teachers.44. ---When _______ the Museum of London ______(build), do you know? ---Sorry, I‘ve no idea.45.This picture ___________ (paint) by Millie yesterday.46. These photos ______…

python源码剖析_Python源码剖析 - 对象初探

01 前言 对象是 python 中最核心的一个概念&#xff0c;在python的世界中&#xff0c;一切都是对象&#xff0c;整数、字符串、甚至类型、整数类型、字符串类型&#xff0c;都是对象。 02 什么是PyObject Python 中凡事皆对象&#xff0c;而其中 PyObject 又是所有对象的基础&a…

html点线面制作,利用HTML5绘制点线面组成的3D图形的示例

玩Canvas玩了有两三个礼拜了&#xff0c;平面的东西玩来玩去也就那样&#xff0c;所以就开始折腾3D了。因为Canvas画布终究还是平面的&#xff0c;所以要有3D就得抽象出一个Z轴。然后再把3D坐标转换成2D坐标&#xff0c;画到画布上&#xff0c;再通过旋转等变换效果来产生3D感。…