二維碼生成和掃描

一.二維碼的介紹

  • 二維碼是用特定的幾何圖形來記錄信息
  • 常用的二維碼開發(fā)框架有:ZXing和ZBarSDK
  • 蘋果從iOS7開始集成了二維碼的生成和讀取功能,并且之前的框架不支持64位,因此目前只使用蘋果的框架即可

二.二維碼的生成

  • 二維碼的生成就是將固定的信息生成對應(yīng)的二維碼圖形
  • 生成二維碼的步驟:
    • 導(dǎo)入CoreImage框架
    • 通過濾鏡CIFilter生成二維碼
      • 創(chuàng)建濾鏡對象
      • 設(shè)置濾鏡的默認(rèn)設(shè)置
      • 給濾鏡設(shè)置數(shù)據(jù)(KVC)
      • 獲取生成的二維碼圖形
    //1. 創(chuàng)建濾鏡
    CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

    // 2.恢復(fù)默認(rèn)設(shè)置
    [filter setDefaults];

    // 3. 設(shè)置數(shù)據(jù)
    NSString *info = @"http://www.reibang.com/users/57da48d44319/latest_articles";
    NSData *infoData = [info dataUsingEncoding:NSUTF8StringEncoding];
    [filter setValue:infoData forKey:@"inputMessage"];

    // 4. 生成二維碼
    CIImage *im = [filter outputImage] ;
    self.imageView.image = [im createNonInterpolatedWithSize:300.0];

三.二維碼的掃描

  • 二維碼掃描就是將二維碼的圖像讀取,并且解析成我們可以識別的信息
  • 掃描二維碼的步驟
    • 讀取二維碼需要導(dǎo)入AVFoundation框架
    • 利用攝像頭讀取信息,并且輸入
      • 獲取捕捉會話(AVCaptureSession)
      • 設(shè)置輸入(攝像頭)
      • 設(shè)置輸出(數(shù)據(jù))
      • 添加預(yù)覽圖層
      • 開始掃描二維碼
#pragma mark - 掃描二維碼
- (void)scanEWM{
    // 1.創(chuàng)建捕捉會話
    AVCaptureSession *session = [[AVCaptureSession alloc] init];
    self.session = session;

    // 2.設(shè)置輸入(攝像頭)
    //  AVMediaTypeVideo:攝像頭 AVMediaTypeAudio:話筒 AVMediaTypeMuxed:彈幕
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
    [session addInput:input];

    // 3.設(shè)置輸出(數(shù)據(jù))
    AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];
    [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
    [session addOutput:output];
    // 設(shè)置輸入的類型,必須在output加入到會話之后來設(shè)置
    [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];

    // 4.添加閱覽圖層
    AVCaptureVideoPreviewLayer *layer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
    layer.frame = self.view.bounds;
    [self.view.layer addSublayer:layer];
    self.layer = layer;

    // 5.開始掃描
    [session startRunning];
}


- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
    if (metadataObjects.count > 0) {
        // 1.獲取掃描到的內(nèi)容
        AVMetadataMachineReadableCodeObject *object = [metadataObjects lastObject];
        NSLog(@"%@", object.stringValue);

        // 2.停止會話
        [self.session stopRunning];

        // 3.移除預(yù)覽圖層
        [self.layer removeFromSuperlayer];
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末筷弦,一起剝皮案震驚了整個濱河市逻澳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌滓侍,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件财饥,死亡現(xiàn)場離奇詭異案铺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)闸迷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俘枫,“玉大人腥沽,你說我怎么就攤上這事○剑” “怎么了今阳?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長茅信。 經(jīng)常有香客問我盾舌,道長,這世上最難降的妖魔是什么蘸鲸? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任妖谴,我火速辦了婚禮,結(jié)果婚禮上酌摇,老公的妹妹穿的比我還像新娘膝舅。我一直安慰自己嗡载,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布仍稀。 她就那樣靜靜地躺著鼻疮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪琳轿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天耿芹,我揣著相機(jī)與錄音崭篡,去河邊找鬼。 笑死吧秕,一個胖子當(dāng)著我的面吹牛琉闪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播砸彬,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼颠毙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了砂碉?” 一聲冷哼從身側(cè)響起蛀蜜,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎增蹭,沒想到半個月后滴某,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡滋迈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年霎奢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饼灿。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡幕侠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碍彭,到底是詐尸還是另有隱情晤硕,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布硕旗,位于F島的核電站窗骑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏漆枚。R本人自食惡果不足惜创译,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望墙基。 院中可真熱鬧软族,春花似錦刷喜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至颗祝,卻和暖如春浊闪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背螺戳。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工搁宾, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人倔幼。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓盖腿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親损同。 傳聞我的和親對象是個殘疾皇子翩腐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 對于iOS二維碼的生成和掃描,也算的上老生常談的問題了,但是為了自己以后找這一方面的資料的時候能夠方便,所以寫一篇...
    神經(jīng)騷棟閱讀 1,543評論 7 17
  • 二維碼生成 二維碼生成用到的是libqrencode,這個庫是用C語言實現(xiàn)的,在使用的時候需要#import "Q...
    c048e8b8e3d7閱讀 1,288評論 0 0
  • 第一部分:二維碼生成 關(guān)于二維碼的生成有很多第三方插件,本次demo主要使用libqrencode來實現(xiàn)二維碼生成...
    笑里劍閱讀 350評論 0 0
  • 跟前篇完全一樣的方法追蹤源碼進(jìn)行分析膏燃。而在這之前也不妨先進(jìn)行一下預(yù)估:UI呈現(xiàn)上與綜合是相同的茂卦,僅在單個數(shù)據(jù)項上多...
    郭非文閱讀 476評論 0 3
  • 文/木葉 良人依舊孤燈, 問君何懼相逢蹄梢, 已是飄蓬半生疙筹。 怨來怨去, 不覺淚滿三更禁炒。 2017.7.23
    木__葉閱讀 461評論 2 4