iOS二维码,条形码扫描问题

1.公司做一个二维码条形码扫描的项目,遇到二维码扫描很好识别,条形码扫描有点慢

解决办法:device放大焦距(完美解决)

 

 //获取摄像设备

    AVCaptureDevice * device = [AVCaptureDevicedefaultDeviceWithMediaType:AVMediaTypeVideo];

    //创建输入流

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

    //创建输出流

    AVCaptureMetadataOutput * output = [[AVCaptureMetadataOutputalloc]init];

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

    [output setMetadataObjectsDelegate:selfqueue:dispatch_get_main_queue()];

    output.rectOfInterest = scanCrop;

//    [ output setRectOfInterest : CGRectMake (( 124 )/ ScreenHEI ,(( ScreenWHD - 220 )/ 2 )/ ScreenWHD , 220 / ScreenHEI , 220 / ScreenWHD )];

    //初始化链接对象

    session = [[AVCaptureSessionalloc]init];

    //高质量采集率

    [sessionsetSessionPreset:AVCaptureSessionPresetHigh];

    if (input) {

        [sessionaddInput:input];

    }

    if (output) {

        [sessionaddOutput:output];

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

        NSMutableArray *a = [[NSMutableArrayalloc] init];

        if ([output.availableMetadataObjectTypescontainsObject:AVMetadataObjectTypeQRCode]) {

            [a addObject:AVMetadataObjectTypeQRCode];

        }

        if ([output.availableMetadataObjectTypescontainsObject:AVMetadataObjectTypeEAN13Code]) {

            [a addObject:AVMetadataObjectTypeEAN13Code];

        }

        if ([output.availableMetadataObjectTypescontainsObject:AVMetadataObjectTypeEAN8Code]) {

            [a addObject:AVMetadataObjectTypeEAN8Code];

        }

        if ([output.availableMetadataObjectTypescontainsObject:AVMetadataObjectTypeCode128Code]) {

            [a addObject:AVMetadataObjectTypeCode128Code];

        }

        output.metadataObjectTypes=a;

    }

    /*

     [ _output setRectOfInterest : CGRectMake (( 124 )/ ScreenHigh ,(( ScreenWidth - 220 )/ 2 )/ ScreenWidth , 220 / ScreenHigh , 220 / ScreenWidth )];

     */

    AVCaptureVideoPreviewLayer * layer = [AVCaptureVideoPreviewLayerlayerWithSession:session];

    layer.videoGravity=AVLayerVideoGravityResizeAspectFill;

    layer.frame = CGRectMake(0, 0, [UIScreenmainScreen].bounds.size.width, self.ScanReadView.frame.size.height);

    [self.ScanReadView.layerinsertSublayer:layer atIndex:0];

    

    [selfsetOverlayPickerView:self.ScanReadView];

    //放大焦距

    NSError *error = nil;

    [device lockForConfiguration:&error];

    

    if (device.activeFormat.videoMaxZoomFactor > 2) {

        device.videoZoomFactor = 2;

    }else{

        device.videoZoomFactor = device.activeFormat.videoMaxZoomFactor;

    }

    

    [device unlockForConfiguration];

    //开始捕获

    [sessionstartRunning];

 

时间: 2024-12-30 08:36:04

iOS二维码,条形码扫描问题的相关文章

Android基于Google Zxing实现二维码/条形码扫描、生成二维码/条形码

 二维码/条形码生成器 二维码/条形码扫描器 一.二维码与条形码工作原理 目前的很多应用上都有扫码功能,当时微信推出二维码扫码功能时,觉得imagine,通过一张简单的图片就能扫描添加还有,还有分享名片功能(也是一张二维码图片,识别扫描). 下面小编将通过文章主要介绍QRCode方面技术. QRCode是被广泛应用的一种二维码,解码速度快.二维码相对于条形码来说,二维码的存储数据量更大,空间利用率高,有一定的容错性. 二维码原理介绍: 二维码是用某种特定的几何图形按一定的规律在平面上分布的黑

iOS系统原生二维码条形码扫描

本文讲述如何用系统自带的东东实现二维码扫描的功能:点击当前页面的某个按钮,创建扫描VIEW.细心的小伙伴可以发现 title被改变了,返回按钮被隐藏了.这个代码自己写就行了,与本文关系不大...绿色的线会上下跑,不要担心:D 实现效果如下: 1.在工程中添加框架AVFoundation.framework 2.声明代理:AVCaptureMetadataOutputObjectsDelegate . define 几个东东用来画框.画线: #define SCANVIEW_EdgeTop 40.

使用IOS7原生API进行二维码条形码的扫描

使用IOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析二维码的接口.经过测试,使用原生API扫描和处理的效率非常高,远远高于第三方库. 一.使用方法示例 官方提供的接口非常简单,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

IOS二维码扫描IOS7系统实现

扫描相关类 二维码扫描需要获取摄像头并读取照片信息,因此我们需要导入系统的AVFoundation框架,创建视频会话.我们需要用到一下几个类: AVCaptureSession 会话对象.此类作为硬件设备输入输出信息的桥梁,承担实时获取设备数据的责任 AVCaptureDeviceInput 设备输入类.这个类用来表示输入数据的硬件设备,配置抽象设备的port AVCaptureMetadataOutput 输出类.这个支持二维码.条形码等图像数据的识别 AVCaptureVideoPrevie

iOS- 详解如何使用ZBarSDK集成扫描二维码/条形码,点我!

1.前言 目前市场主流APP里,二维码/条形码集成主要分两种表现形式来集成: a. 一种是调用手机摄像头并打开系统照相机全屏去拍摄 b. 一种是自定义照相机视图的frame,自己控制并添加相关扫码指南 今天我就用ZBarSDK来实现上诉两种主流集成方式,与大家共同交流学习/ 2.第一步导入ZBarSDK 可以从github上下载好ZBarSDK,导入项目,并且导入相关iOS.framework 如图: 3.集成扫描二维码/条形码 3.1.调用手机摄像头并打开系统照相机全屏去拍摄 实现效果图: 1

iOS二维码扫描,你需要注意的两件事

在 iOS7 以前,在iOS中实现二维码和条形码扫描,我们所知的有,两大开源组件ZBar与ZXing. 这两大组件我们都有用过,这里总结下各自的缺点: ZBar ZBar在扫描的灵敏度上,和内存的使用上相对于ZXing上都是较优的,但是对于 “圆角二维码” 的扫描确很困难.如: ZXing ZXing 是 Google Code上的一个开源的条形码扫描库,是用java设计的,连Google Glass 都在使用的.但有人为了追求更高效率以及可移植性,出现了c++ port. Github上的Ob

Ios二维码扫描(系统自带的二维码扫描)

Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你当前的控制器中导入 #import <AVFoundation/AVFoundation.h> <AVCaptureMetadataOutputObjectsDelegate>代理 3).在@interface中定义 @property (nonatomic,strong)AVCapt

ios开发日记13-原生二维码的扫描和生成

今天博主有一个二维码扫描和生成的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 从iOS7开始官方集成了二维码的扫描和生成功能 此前被广泛使用的zbarsdk目前不支持64位处理器 1.扫描二维码 扫描二维码需要导入AVFoundation框架 利用摄像头识别二维码中的内容(模拟器不行) 输入(摄像头) 由会话将摄像头采集到的二维码图像转换成字符串数据 输出(数据) 由预览图层显示扫描场景 // 实例化拍摄设备 AVCaptureDevice *device = [AVCapture

iOS:二维码的扫描

iOS 中二维码的扫描借用#import <AVFoundation/AVFoundation.h> 实现,会用到<AVCaptureMetadataOutputObjectsDelegate>这个代理,并会调用相机进行扫描, 具体实现步骤如下: // 1.创建捕捉会话    AVCaptureSession *session = [[AVCaptureSession alloc] init];        // 2.添加一个输入源    AVCaptureDevice *dev