(一〇五)二维码的生成和扫描

【生成二维码】

iOS7以后苹果有CoreImage框架用于生成二维码,二维码通过滤镜生成,二维码滤镜可以将字符串转化为二维码。

注意字符串必须转化为NSData传入,通过KVC告诉滤镜。

滤镜输出为CIImage,注意要转化为UIImage使用。

代码如下:

    // 1.实例化二维码滤镜
    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
    // 2.重置滤镜属性
    [filter setDefaults];
    // 3.字符串转NSData
    NSData *data = [@"http://www.soulghost.com" dataUsingEncoding:NSUTF8StringEncoding];
    // 4.通过KVC设置属性
    [filter setValue:data forKey:@"inputMessage"];
    // 5.生成二维码
    CIImage *QRImage = [filter outputImage];
    UIImage *image = [UIImage imageWithCIImage:QRImage];

【扫描二维码】

扫描二维码通过输入源摄像头、会话转换数据、输出成字符串完成二维码的解析。

代码如下:

//
//  ViewController.m
//  读取二维码
//
//  Created by 11 on 8/3/15.
//  Copyright (c) 2015 soulghost. All rights reserved.
//

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController () <AVCaptureMetadataOutputObjectsDelegate>

@property (nonatomic, strong) AVCaptureSession *session;
@property (nonatomic, strong) AVCaptureVideoPreviewLayer *previewLayer;

@end

@implementation ViewController

- (void)viewDidLoad{

    [super viewDidLoad];

    // 摄像头作为输入源
    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()];

    // 实例化一个会话,它将摄像头采集的图像(input)转换成字符串(output)。
    AVCaptureSession *session = [[AVCaptureSession alloc] init];
    [session addInput:input];
    [session addOutput:output];
    _session = session;
    // 设置输出类型为二维码
    [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];

    // 创建二维码的扫描视图,通过session判断显示的内容。
    AVCaptureVideoPreviewLayer *preview = [AVCaptureVideoPreviewLayer layerWithSession:_session];
    preview.videoGravity = AVLayerVideoGravityResizeAspectFill;
    preview.frame = self.view.bounds;
    [self.view.layer insertSublayer:preview atIndex:100];
    _previewLayer = preview;

    // 开启会话
    [_session startRunning];

}

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

    // 停止会话,移除扫描视图
    [_session stopRunning];
    [_previewLayer removeFromSuperlayer];

    // 取出数据
    if (metadataObjects.count > 0) {
        AVMetadataMachineReadableCodeObject *obj = [metadataObjects firstObject];
        NSLog(@"%@",obj);
    }

}

@end

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-21 00:18:27

(一〇五)二维码的生成和扫描的相关文章

IOS使用ZBarSDK实现二维码的生成和扫描

现在二维码的使用也是越来越多,那我们在做APP的时候,有时也需要考虑二维码的生成和扫描 首先简单的讲一下二维码的生成 首先定义一个ImageView来显示生成的二维码图片 只是简单的做一下字符串转化成二维码 导入 libqrencode文件 引入头文件#import "QRCodeGenerator.h" 即可使用 imageview.image = [QRCodeGenerator qrImageForString:@"www.cnblogs.com/myselfxiaox

iOS二维码的生成与扫描

由于近期工作中遇到了个需求:需要将一些固定的字段 在多个移动端进行相互传输,所以就想到了 二维码 这个神奇的东东! 现在的大街上.连个摊煎饼的大妈 都有自己的二维码来让大家进行扫码支付.可见现在的二维码使用率多高, 不光如此,在很多的社交类的APP 基本都有扫一扫加好友这个功能吧,因此决定学一学这个神奇的东西. 查找了一些资料博客啊发现,iOS7之前 对于开发人员来说 熟悉的第三方QRCode库有: ZXingGoogle出品并开源 一直到现在都还有专人维护 是世界上使用最广的二维码库 iOS上

二维码的生成与扫描

二维码的生成与扫描 搜集了二维码的生成.扫描功能代码,扫描功能 包括了 二维码.条码的扫描,具有 360扫描的UI效果,作为二维码的工具. 下载地址:http://www.devstore.cn/code/info/519.html 源码运行截图   

二维码的生成和扫描识别

一.二维码的生成 1 #import "ViewController.h"  2 #import "QRCodeGenerator.h"  3   4 @interface ViewController ()  5   6 @property (nonatomic, strong) UIImageView *iv;  7   8 @end  9  10 @implementation ViewController 11  12 - (void)viewDidLoad

二维码的生成和扫描

极客学院的视频,讲解了扫描二维码,和生成二维码 http://www.jikexueyuan.com/course/134_2.html?ss=1 在写这些代码之前要先导一个包的,BarCodeTest 1 package com.example.ewm; 2 3 import com.google.zxing.WriterException; 4 import com.zxing.activity.CaptureActivity; 5 import com.zxing.encoding.Enc

unityZXing二维码的生成与扫描

using System.Collections;using System.Collections.Generic;using UnityEngine;using ZXing;using UnityEngine.UI;/// <summary>/// 二维码扫描识别功能/// </summary>public class TestQRCodeScanning : MonoBehaviour { [Header("摄像机检测界面")] public RawImag

二维码的生成细节和原理

二维码的生成细节和原理 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等.这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密码算法,在此写一这篇文章 ,揭露一下.供好学的人一同学习之. 关于QR Code Specification,可参看这个PDF:http://raidenii.net/files/datashee

二维码的生成细节和原理【转】

二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等.这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密 码算法,在此写一这篇文章 ,揭露一下.供好学的人一同学习之. 关于 QR Code Specification,可参看这个 PDF:http://raidenii.net/files/datasheets/m

ios-深度解析二维码的生成与使用

利用一个小demo来对二维码进行学习,总共四个界面(主界面,生成二维码界面,识别二维码界面,扫描二维码界面) 一.二维码的介绍 1.什么是二维码? 二维条码/二维码是用某种特定的几何图形按一定规律在平面分布的黑白相间的图形记录数据符号信息的 总结: 用图形记录标记一些信息,方便通过图形识别来获取信息 2 应用场景 信息获取(名片.地图.WIFI密码.资料) 手机电商(用户扫码.手机直接购物下单) 手机支付(扫描商品二维码,通过银行或第三方支付提供的手机端通道完成支付) 微信添加好友 二.二维码界