1、概述
1、經由過程某種特定的幾何圖形按必定紀律在立體(二維偏向上)散布的诟谇相間的圖形記載數據符號信息的
2、二維碼平日可以包括以下內容
3、二維碼具有異常普遍的運用
2、二維碼的生成
1、生成道理
經由過程一個類CIFilter(濾鏡)包括二維碼中一切的信息,然後生成一張二維碼圖片
二維碼中央的icon(頭像),是經由過程在生成的圖片上添加一張圖片完成的
2、生成步調
3、生成的二維碼的後果圖
4、詳細代碼完成
1)、經由過程storyboard創立兩個imageView,分離用來展現二維碼圖片和頭像
2)、具有展現二維碼圖片的imageView
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
3)、生成二維碼
/**點擊屏幕的時刻顯示二維碼*/ - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { //1.創立濾鏡 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; //2.恢復默許 [filter setDefaults]; //3.給濾鏡添加數據 NSString *dataString = @"http://www.xxx.com/theDesertIslandOutOfTheWorld/"; // NSString *dataString = @"世俗孤島"; //將數據轉換成NSData類型 NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding]; //經由過程KVC設置濾鏡的二維碼輸出信息 [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,則會翻開指定的收集資本
3、二維碼的掃描
1、留意:
2、二維碼掃描的進程
3、進程剖析
1)、經由過程攝像頭掃描二維碼信息須要用到AVCaptureSession類
2)、經由過程AVCaptureSession類捕捉的數據,可以經由過程指定輸入真個過濾類型來以特定的類型解析捕捉的數據
3)、可認為輸入端AVCaptureMetadataOutput設置署理,來聽捕捉進程
4)、經由過程AVCaptureVideoPreviewLayer類將獲得的原始數據襯著到指定的圖層
4、二維碼的生成進程
經由過程成員屬性保留輸出源與輸入真個調和者(AVCaptureSession對象)
@property (nonatomic, weak) AVCaptureSession *session;
經由過程成員屬性保留展現經由過程輸出裝備輸出的元數據的圖層,用於在恰當的時刻移除圖層
@property (nonatomic, weak) AVCaptureVideoPreviewLayer *layer;
創立AVCaptureSession類的對象(簡稱:捕捉對象),用於捕捉音頻/視頻端口的數據
AVCaptureSession *session = [[AVCaptureSession alloc] init]; self.session = session;
給捕捉對象添加輸出裝備(平日是攝像頭)
//設置輸出裝備輸出數據的類型(視頻) AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil]; [session addInput:input];
給捕捉對象添加輸入端
AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init]; //設置署理 [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()]; [session addOutput:output];
設置輸出源的過濾前提(只獲得二維碼信息)
[output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
將捕捉的原始數據顯示到掌握器的view上
AVCaptureVideoPreviewLayer *layer = [AVCaptureVideoPreviewLayer layerWithSession:session]; layer.frame = self.view.bounds; [self.view.layer addSublayer:layer];
開端獲得數據
[session startRunning];
完成輸入真個署理辦法,監聽捕捉進程
- (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(@"沒有掃描到數據"); } }
以上就是IOS二維碼咭片生成與讀取的具體代碼引見,願望對年夜家的進修有所贊助。
【IOS生成與讀取二維碼咭片】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!