欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IOS生成與讀取二維碼名片

 更新時間:2016年01月12日 14:30:53   作者:世俗孤島  
這篇文章主要為大家介紹了IOS生成與讀取二維碼名片的方法,感興趣的小伙伴們可以參考一下

一、概述
1、通過某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號信息的
2、二維碼通??梢园韵聝?nèi)容

  • 純文本
  • 名片
  • URL

3、二維碼具有非常廣泛的應(yīng)用

  • 二維碼名片
  • 掃碼付款
  • 網(wǎng)址(URL),掃描后自動打開網(wǎng)址

二、二維碼的生成
1、生成原理
通過一個類CIFilter(濾鏡)包含二維碼中所有的信息,然后生成一張二維碼圖片
二維碼中間的icon(頭像),是通過在生成的圖片上添加一張圖片實現(xiàn)的
2、生成步驟

  • 創(chuàng)建濾鏡
  • 初始化濾鏡
  • 添加二維碼信息
  • 獲取生成的二維碼圖片
  • 將二維碼圖片展示出來

3、生成的二維碼的效果圖

4、具體代碼實現(xiàn)
1)、通過storyboard創(chuàng)建兩個imageView,分別用來展示二維碼圖片和頭像

2)、擁有展示二維碼圖片的imageView

@property (weak, nonatomic) IBOutlet UIImageView *imageView;

3)、生成二維碼

/**點擊屏幕的時候顯示二維碼*/
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
  //1.創(chuàng)建濾鏡
  CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

  //2.恢復(fù)默認
  [filter setDefaults];

  //3.給濾鏡添加數(shù)據(jù)
  NSString *dataString = @"http://www.xxx.com/theDesertIslandOutOfTheWorld/";
//  NSString *dataString = @"世俗孤島";
  //將數(shù)據(jù)轉(zhuǎn)換成NSData類型
  NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];
  //通過KVC設(shè)置濾鏡的二維碼輸入信息
  [filter setValue:data forKey:@"inputMessage"];

  //4.獲取輸出的二維碼圖片(CIImage類型)
  CIImage *outImage = [filter outputImage];
  //將CIImage類型的圖片裝換成UIImage類型的圖片
  UIImage *image = [UIImage imageWithCIImage:outImage];

  //5.顯示二維碼圖片
  self.imageView.image = image;
}

4)、通過二維碼掃描工具,可以掃描生成的二維碼
若二維碼的輸入信息是URL,則會打開指定的網(wǎng)絡(luò)資源
三、二維碼的掃描
1、注意:

  • 二維碼掃碼需要使用攝像頭,需要真機設(shè)備
  • Xcode7可是免費真機調(diào)試

2、二維碼掃描的過程

  • 通過攝像頭掃描二維碼
  • 解析二維碼數(shù)據(jù)
  • 根據(jù)二維碼信息執(zhí)行相應(yīng)的操作

3、過程分析
1)、通過攝像頭掃描二維碼信息需要用到AVCaptureSession類

  • 該類是用來協(xié)調(diào)從音頻/視頻輸入端口到輸出端的數(shù)據(jù)
  • 該類需要一個輸入設(shè)備AVCaptureDeviceInput,通常是攝像頭
  • 該類需要一個輸出端,輸出指定類型的數(shù)據(jù),有多個類可以選擇(如:AVCaptureMetadataOutput)
  • 需要調(diào)用- startRunning方法開啟輸入源

2)、通過AVCaptureSession類捕獲的數(shù)據(jù),可以通過指定輸出端的過濾類型來以特定的類型解析捕獲的數(shù)據(jù)
3)、可以為輸出端AVCaptureMetadataOutput設(shè)置代理,來聽捕獲過程
4)、通過AVCaptureVideoPreviewLayer類將獲取的原始數(shù)據(jù)渲染到指定的圖層
4、二維碼的生成過程
通過成員屬性保存輸入源與輸出端的協(xié)調(diào)者(AVCaptureSession對象)

@property (nonatomic, weak) AVCaptureSession *session;

通過成員屬性保存展示通過輸入設(shè)備輸入的元數(shù)據(jù)的圖層,用于在適當?shù)臅r候移除圖層

@property (nonatomic, weak) AVCaptureVideoPreviewLayer *layer;

創(chuàng)建AVCaptureSession類的對象(簡稱:捕獲對象),用于捕獲音頻/視頻端口的數(shù)據(jù)

AVCaptureSession *session = [[AVCaptureSession alloc] init];
self.session = session;

給捕獲對象添加輸入設(shè)備(通常是攝像頭)

//設(shè)置輸入設(shè)備輸入數(shù)據(jù)的類型(視頻)
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
[session addInput:input];

給捕獲對象添加輸出端

AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];
//設(shè)置代理
[output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[session addOutput:output];

設(shè)置輸入源的過濾條件(只獲取二維碼信息)

[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];

將捕獲的原始數(shù)據(jù)顯示到控制器的view上

AVCaptureVideoPreviewLayer *layer = [AVCaptureVideoPreviewLayer layerWithSession:session];
layer.frame = self.view.bounds;
[self.view.layer addSublayer:layer];

開始獲取數(shù)據(jù)

[session startRunning];

實現(xiàn)輸出端的代理方法,監(jiān)聽捕獲過程

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
  if (metadataObjects.count > 0)
  {
    //獲取輸出端的信息
    AVMetadataMachineReadableCodeObject *object = [metadataObjects lastObject];
    NSLog(@"%@", object.stringValue);

    //停止掃描
    [self.session stopRunning];

    //將展示圖層移除
    [self.layer removeFromSuperlayer];
  }
  else
  {
    NSLog(@"沒有掃描到數(shù)據(jù)");
  }
}

以上就是IOS二維碼名片生成與讀取的詳細代碼介紹,希望對大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • iOS Moya實現(xiàn)OAuth請求的方法

    iOS Moya實現(xiàn)OAuth請求的方法

    這篇文章主要介紹了iOS Moya實現(xiàn)OAuth請求的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • iOS中WKWebView的一些特殊使用總結(jié)

    iOS中WKWebView的一些特殊使用總結(jié)

    這篇文章主要給大家介紹了關(guān)于iOS中WKWebView的一些特殊使用,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用iOS具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • iOS實現(xiàn)折疊單元格

    iOS實現(xiàn)折疊單元格

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)折疊單元格,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • ios 貝塞爾曲線切割圓角的方法

    ios 貝塞爾曲線切割圓角的方法

    本篇文章主要介紹了ios 貝塞爾曲線切割圓角的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • iOS實現(xiàn)類似格瓦拉電影的轉(zhuǎn)場動畫

    iOS實現(xiàn)類似格瓦拉電影的轉(zhuǎn)場動畫

    這篇文章主要給大家介紹了利用iOS如何實現(xiàn)類似格瓦拉電影的轉(zhuǎn)場動畫,文中給出了詳細步驟實現(xiàn)代碼,對大家的學(xué)習(xí)和理解很有幫助,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • iOS實現(xiàn)換膚功能的簡單處理框架(附源碼)

    iOS實現(xiàn)換膚功能的簡單處理框架(附源碼)

    這篇文章主要給大家介紹了關(guān)于iOS實現(xiàn)換膚功能的簡單處理框架,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • iOS自定義身份證鍵盤

    iOS自定義身份證鍵盤

    這篇文章主要為大家詳細介紹了iOS自定義身份證鍵盤,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • IOS中UIWebView、WKWebView之JS交互

    IOS中UIWebView、WKWebView之JS交互

    本篇文章主要介紹了IOS中UIWebView、WKWebView之JS交互,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • iOS的HTTP請求和請求回執(zhí)類用法小結(jié)

    iOS的HTTP請求和請求回執(zhí)類用法小結(jié)

    這里為大家整理了iOS的HTTP請求和請求回執(zhí)類用法小結(jié),包括發(fā)送請求的NSURLRequest、NSMutableURLRequest和負責回復(fù)的NSURLResponse類的常用方法和屬性,需要的朋友可以參考下
    2016-06-06
  • iOS 自定義狀態(tài)欄和導(dǎo)航欄詳細介紹

    iOS 自定義狀態(tài)欄和導(dǎo)航欄詳細介紹

    這篇文章主要介紹了iOS 自定義狀態(tài)欄和導(dǎo)航欄詳細介紹的相關(guān)資料,需要的朋友可以參考下
    2016-11-11

最新評論