一:初始化

//扫描区域

UIImage *hbImage=[UIImage imageNamed:@"pick_bg"];

UIImageView * scanZomeBack=[[UIImageView alloc] init];

scanZomeBack.backgroundColor = [UIColor clearColor];

scanZomeBack.image = hbImage;

//添加一个背景图片

CGRect mImagerect = CGRectMake(20*HEIGHT_FACTOR, (HEIGHT-280*HEIGHT_FACTOR)/2, 280*HEIGHT_FACTOR, 280*HEIGHT_FACTOR);

[scanZomeBack setFrame:mImagerect];

CGRect scanCrop=[self getScanCrop:mImagerect readerViewBounds:self.frame];

[self addSubview:scanZomeBack];

//获取摄像设备

AVCaptureDevice * device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

//创建输入流

AVCaptureDeviceInput * input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];

//创建输出流

AVCaptureMetadataOutput * output = [[AVCaptureMetadataOutput alloc]init];

//设置代理 在主线程里刷新

[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];

output.rectOfInterest = scanCrop;//a CGRect that determines the receiver's rectangle of interest for each frame of video.

//初始化链接对象

session = [[AVCaptureSession alloc]init];

//高质量采集率

[session setSessionPreset:AVCaptureSessionPresetHigh];

if (input) {

[session addInput:input];

}

if (output) {

[session addOutput:output];

//设置扫码支持的编码格式(如下设置条形码和二维码兼容)

NSMutableArray *a = [[NSMutableArray alloc] init];

if ([output.availableMetadataObjectTypes containsObject:AVMetadataObjectTypeQRCode]) {

[a addObject:AVMetadataObjectTypeQRCode];

}

if ([output.availableMetadataObjectTypes containsObject:AVMetadataObjectTypeEAN13Code]) {

[a addObject:AVMetadataObjectTypeEAN13Code];

}

if ([output.availableMetadataObjectTypes containsObject:AVMetadataObjectTypeEAN8Code]) {

[a addObject:AVMetadataObjectTypeEAN8Code];

}

if ([output.availableMetadataObjectTypes containsObject:AVMetadataObjectTypeCode128Code]) {

[a addObject:AVMetadataObjectTypeCode128Code];

}

output.metadataObjectTypes=a;

}

AVCaptureVideoPreviewLayer * layer = [AVCaptureVideoPreviewLayer layerWithSession:session];

layer.videoGravity=AVLayerVideoGravityResizeAspectFill;

layer.frame=self.layer.bounds;

[self.layer insertSublayer:layer atIndex:0];

//开始捕获

[session startRunning];

二:在回调方法中识别扫描结果

#pragma mark - 扫描结果

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection

{

if (metadataObjects && metadataObjects.count>0) {

AVMetadataMachineReadableCodeObject * metadataObject = [metadataObjects objectAtIndex : 0 ];

//输出扫描字符串

if (_delegate && [_delegate respondsToSelector:@selector(readerScanResult:)]) {

[_delegate readerScanResult:metadataObject.stringValue];

}

}

}

三:源码下载链接:

http://download.csdn.net/detail/luco2008/9497923

iOS 自带二维码识别(识别二维码,条形码以及从相册中选择图片进行识别)相关推荐

  1. 小米8手机相册中的图片怎么识别文字?

    小米8大家都买了吗?最近新出的还是很好的,小米8手机相册中的图片怎么识别?对于用小米手机的人来说很简单,下面分享一个方法. 1在手机上输入PDF阅读器,然后开始识别相册图片的文字 2打开就是这样的界面 ...

  2. Android 拍照以及相册中选择(适配高版本)————上传多张照片之压缩处理、在线预览可伸缩放大(二)

    ______ Introduction ______ 前言 上一篇文章刚给大家总结完,关于上传头像的功能.此文章所述 主要是关于上传头像的具体流程以及如何对照片做裁剪处理,回调给控件显示:当然重中之重 ...

  3. 调用Android系统自带相机拍照,从相册中获取图片

    一,前言: 在日常的手机应用开发过程中,经常会遇到上传图片的需求,像上传头像之类的,这就需要调用系统的相机,相册获取照片.但是在Android 系统7.0之后认为这种操作是不安全的,这篇文章主要就是记 ...

  4. 【Linux 内核】实时调度类 ⑥ ( 实时调度类核心函数源码分析 | 插入进程到执行队列 | 从执行队列中选择优先级最高的进程 )

    文章目录 一.enqueue_task_rt 函数 ( 插入进程到执行队列 ) 二.pick_next_task_rt 函数 ( 从执行队列中选择优先级最高的进程 ) 本篇博客中 , 开始分析 str ...

  5. Android中实现获取相册中的图片扫描二维码的功能

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

  6. 中的图片文字识别_文字识别 图片转文字【小程序】

    文字识别小程序在文章的底部 直接拉到文章底部就可使用 ↓↓↓↓↓↓ 大家在平时办公或者学习中经常会处理到图片转文字的问题,对于一些打字比较快的朋友来说并没有太大的问题,但是对于一些打字慢的人来说确实一 ...

  7. 用python实现人脸识别输出画像_这个是利用OpenCV TensorFlow来实现图片人脸识别

    安装 dlib dlib 是一个基于 C++ 编写的扩展库,包含有许多常用的机器学习算法以及图像处理函数. 并且还支持大量的数值计算,如矩阵.大整数随机运算等. 但是在编译安装 dlib 之前我们还需 ...

  8. Python提取word文档中的图片,识别图片文字之后再转存为word文档

    #!/usr/bin/env python # coding: utf-8 import zipfile #压缩包 import os #文件库 import shutil import pytess ...

  9. ZXing 相册中识别二维码和条形码(直接引用就可以了)

    *百度了很久一直没有找到关于相册获取条形码的Demo,真心是醉了,只能苦逼的去自己看 闲话不说直接搞起 分析: *核心 1,通过路径转换成bitmp对象 2,再bitmap对象转换成二进制图片(二值化 ...

最新文章

  1. npm包开发测试与发布
  2. 基础知识的学习,来自十年程序员的经验分享
  3. "unable to load dynamic library"错误的解决方法
  4. 最新开源:3TS腾讯事务处理技术验证系统(下)
  5. 工作277:v-model实战
  6. 一个下载Google code源码的 绿色、迷你工具 MiniSVN v1.0
  7. java中的基本数据类型和运算符_【Java基础】基本数据类型和运算符
  8. c语言之动态分配空间
  9. 注册页面的JSON响应方式详细分析(与前端页面交互方式之一)
  10. 我的世界java版如何装mod_我的世界考古“初代贝爷生存”?开局3滴血,还没进游戏就要自闭了...
  11. Android设置Gmail邮箱
  12. 怎样在 linux 系统下增加一块硬盘
  13. Ruckus R500 AP设置
  14. 基础练习 回文数 C语言
  15. HDMI调试基本原理
  16. “科比男孩”被美国大学录取 即将出国圆梦
  17. 基于LiDAR里程计和先验地图的定位方法
  18. Python实现企业微信发送图片
  19. adobe Adobe Acrobat DC资源下载
  20. AWS亚马逊云EC2搭建ginblog系统

热门文章

  1. 罗德里格斯(Rodrigues)旋转向量转旋转矩阵
  2. 今天带软件测试2班学员就业前的复习分析(2019-7-14)
  3. android亮屏、暗屏、解锁、关闭系统对话的监听事件
  4. 子群-抽象代数【密码学数学基础】
  5. python用tkinter及sympy解方程
  6. 【React】 详解下一代开源混合应用框架Reapp
  7. zynq FPGA 的双目视觉毕业设计(五)之matlab 极线矫正算法实现
  8. java freepascal_Lazarus一个开源的跨平台FreePasscal集成开发环境
  9. 【BZOJ2733】【HNOI2012】永无乡(Splay启发式合并)
  10. 黄芪破壁草本的两种煲汤做法