博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 7 二维码
阅读量:6242 次
发布时间:2019-06-22

本文共 2731 字,大约阅读时间需要 9 分钟。

维码扫描  

2014-06-13 10:20:29|  分类: |举报|字号 

 
 

//

 

//  TCTosweepScan.m

 

//  TongChengSearch

 

//

 

//  Created by Fighting on 14-6-11.

 

//  Copyright (c) 2014 tcsos.com. All rights reserved.

 

//

 

 

 

#import "TCTosweepScan.h"

 

#import <AVFoundation/AVFoundation.h>

 

 

 

@interface TCTosweepScan()<AVCaptureMetadataOutputObjectsDelegate>

 

 

 

@property (strong, nonatomic)AVCaptureDevice *device;

 

@property (strong, nonatomic)AVCaptureDeviceInput *input;

 

@property (strong, nonatomic)AVCaptureMetadataOutput *output;

 

@property (strong, nonatomic)AVCaptureSession *session;

 

@property (strong, nonatomic)AVCaptureVideoPreviewLayer *preview;

 

 

 

@end

 

 

 

 

 

 

 

@implementation TCTosweepScan

 

 

 

- (instancetype)initConfigWith:(CGRect)frame previewFrame:(CGRect)previewFrame {

 

    if (self = [super init]) {

 

        self.frame = frame;

 

        self.autoresizingMask = YES;

 

        

 

        //初始化UI

 

        [self initUI:previewFrame];

 

    }

 

    

 

    return self;

 

}

 

 

 

- (void)dealloc {

 

    // 1. 如果扫描完成,停止会话

 

    [session stopRunning];

 

    

 

    // 2. 删除预览图层

 

    [preview removeFromSuperlayer];

 

    

 

    [output setMetadataObjectsDelegate:nil queue:nil];

 

}

 

 

 

//初始化UI

 

- (void)initUI:(CGRect)previewFrame {

 

 

 

    // Device

 

    device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

 

    

 

    NSError *error = nil;

 

    

 

    // Input

 

    input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];

 

    

 

    if (error) {

 

        NSLog(@"你手机不支持二维码扫描!");

 

        return;

 

    }

 

    

 

    // Output

 

    output = [[AVCaptureMetadataOutput alloc] init];

 

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

 

    

 

    // Session

 

    session = [[AVCaptureSession alloc] init];

 

    [session setSessionPreset:AVCaptureSessionPresetHigh];

 

    

 

    if ([session canAddInput:input]) {

 

        [session addInput:input];

 

    }

 

    

 

    if ([session canAddOutput:output]) {

 

        [session addOutput:output];

 

    }

 

    

 

    // 条码类型

 

    output.metadataObjectTypes = @[AVMetadataObjectTypeQRCode];

 

    

 

    // Preview

 

    preview = [AVCaptureVideoPreviewLayer layerWithSession:session];

 

    preview.videoGravity = AVLayerVideoGravityResizeAspectFill;

 

    preview.frame = previewFrame;

 

    [self.layer addSublayer:preview];

 

 

 

}

 

 

 

//启动扫描

 

- (void)startScan {

 

    // Start

 

    [session startRunning];

 

}

 

 

 

// 此方法是在识别到QRCode,并且完成转换

 

// 如果QRCode的内容越大,转换需要的时间就越长

 

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

 

 

 

    // 1. 如果扫描完成,停止会话

 

    [session stopRunning];

 

    

 

    // 2. 删除预览图层

 

    [preview removeFromSuperlayer];

 

    

 

    NSString *val = nil;

 

    

 

    if (metadataObjects.count > 0) {

 

        AVMetadataMachineReadableCodeObject *obj = metadataObjects[0];

 

        val = obj.stringValue;

 

    }

 

    

 

    if (delegate && [delegate respondsToSelector:@selector(TCTosweepScanDidEnd:)]) {

 

        [delegate TCTosweepScanDidEnd:val];

 

    }

 

}

 

 

 

@synthesize delegate;

 

@synthesize device;

 

@synthesize input;

 

@synthesize output;

 

@synthesize session;

 

@synthesize preview;

 

 
 
 
 
 
你好  如何从相册取出图片  进行识别   在iOS7这个框架下  你可以教我一下吗  我的QQ:2315618550   不胜感激
回复
 
 

转载地址:http://sxsia.baihongyu.com/

你可能感兴趣的文章
用十条命令在一分钟内检查Linux服务器性能[转]
查看>>
深入理解bash及字符串的处理
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
DNS多点部署IP Anycast+BGP实战分析
查看>>
iostat详细使用
查看>>
用户与组
查看>>
【12c新特性】12c中新加入的Enqueue Lock
查看>>
JavaScript语法详解(四)
查看>>
Fail to queue the whole FAL gap in dataguard一例
查看>>
03在Windows Server 2008R2上面建立子域
查看>>
网络系统组成、OSI模型、TCP/IP协议簇
查看>>
服务器无法远程
查看>>
目前发现Exchange 2016的两个管理问题
查看>>
java发送邮件问题
查看>>
myeclipse2013 安装 egit
查看>>
介绍几种常见的网站负载均衡技术
查看>>
httpd详解
查看>>
jquery获取复选框的值
查看>>
深入理解C语言的define
查看>>
安装Discuz
查看>>