二维码

    // 1.实例化二维码滤镜

    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

    // 2.恢复滤镜的默认属性 (因为滤镜有可能保存上一次的属性)

    [filter setDefaults];

    // 3.将字符串转换成NSdata

    NSData *data  = [@"http://www.itheima.com" dataUsingEncoding:NSUTF8StringEncoding];

    

    // 4.通过KVO设置滤镜, 传入data, 将来滤镜就知道要通过传入的数据生成二维码

    [filter setValue:data forKey:@"inputMessage"];

    // 5.生成二维码

     CIImage *outputImage = [filter outputImage];

    UIImage *image = [UIImage  imageWithCIImage:outputImage];

    // 6.设置生成好得二维码到imageview

    self.iv.image = image;



扫描二维码


#import <AVFoundation/AVFoundation.h>

@interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>


@property (nonatomic, strong) AVCaptureSession *session;

@property (nonatomic, strong) AVCaptureVideoPreviewLayer *previewLayer;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // 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]];

    

    self.session = session;

    

    // 5. 视频预览图层

    // 5.1 实例化预览图层, 传递_session是为了告诉图层将来显示什么内容

    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];


}


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

{

    

    // 会频繁的扫描,调用代理方法

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

    [self.session stopRunning];

    // 2. 删除预览图层

    [self.previewLayer removeFromSuperlayer];

    

    NSLog(@"%@", metadataObjects);

    // 3. 设置界面显示扫描结果

    

    if (metadataObjects.count > 0) {

        AVMetadataMachineReadableCodeObject *obj = metadataObjects[0];

        // 提示:如果需要对url或者名片等信息进行扫描,可以在此进行扩展!

        //        _label.text = obj.stringValue;

        NSLog(@"%@", obj.stringValue);

    }

}

阅读更多
文章标签: 二维码
个人分类: 二维码
上一篇size_t 类型
下一篇Swif学习总结 基本数据类型(一)
想对作者说点什么? 我来说一句

二维码 QRCode.net

2018年05月20日 4.85MB 下载

二维码二维码技术指标等

2010年03月12日 476KB 下载

java 二维码相关Jar

2017年10月13日 48B 下载

java二维码制作源码

2015年03月04日 1MB 下载

二维码弹出窗口

2018年07月12日 377KB 下载

Zxing二维码识别

2018年05月11日 1.01MB 下载

ZXing项目源代码

2011年10月28日 58.85MB 下载

谷歌二维码

2018年06月22日 1.46MB 下载

没有更多推荐了,返回首页

关闭
关闭