ZBar的使用

ZBar的使用

2012-08-01 13:27:43| 分類: 默認分類 |舉報
|字號

訂閱

基本介紹: 引用:http://blog.csdn.net/miracle_of_thinking/article/ details/7576532

如今二維碼隨處可見,無論是實物商品還是各種禮券都少不了二 維碼的身影。而手機等移動設備又成爲二維碼的一個很好的應用 平臺,不管是生成二維碼還是掃碼二維碼。 下面介紹一下如何在蘋果iOS設備上使用二維碼:

掃描二維碼(解碼)
掃描二維碼的開源庫有很多如 ZBarZXing等。在此以ZBar 爲例子構建二維碼掃碼應用。
首先在github上下載ZBar SDK,地址https://github.com/ bmorton/ZBarSDK
打開壓縮包,其中有ZBarSDK 文件夾,ZBarSDK 文件夾包 拖到項目中來。

如下圖:

屏幕快照 2014-10-13 下午7.15.07.png

屏幕快照 2014-10-13 下午7.16.26.png


屏幕快照 2014-10-13 下午7.16.57.png


注意頭文件路徑填寫:

未命名文件夾/   

(Finder)

(XCode) 其中包含一個libzbar.a的靜態庫。

page1image5360.png page1image5528.png

接着往項目中添加Framework框架及鏈接庫(動態庫、靜態

)。在項目屬性TARGETS Summary 中找到Linked Frameworks and Libraries,添加AVFoundation.framwork, CoreMedia.framework, CoreVideo.framework, libiconv.dylib libzbar.a (如圖)

page2image7392.png page2image7560.png



第二步

然後在使用的地方引入頭文件#import "ZBarSDK.h"

 調用ZBar的類必須實現ZBarReaderDelegate協議,: UIViewController <ZBarReaderDelegate>
//掃描二維碼

- (IBAction)play:(id)sender {

    

    ZBarReaderViewController *reader=[[ZBarReaderViewController alloc] init];

    reader.readerDelegate=self;

    

    if ([ZBarReaderViewController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

        reader.sourceType=UIImagePickerControllerSourceTypeCamera;

        ZBarImageScanner *scanner=reader.scanner;

        [scanner setSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0];

//        [self presentModalViewController:reader animated:YES];

//        [self.navigationController pushViewController:reader animated:YES];

        [self presentViewController:reader animated:YES completion:nil];

    }

}

//生成二維碼

- (IBAction)newAlloc:(id)sender {

    

    self.image.image = [QRCodeGenerator qrImageForString:@"小柯" imageSize:self.image.bounds.size.width];

}


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{

    id<NSFastEnumeration>results=[info objectForKey:ZBarReaderControllerResults];

    ZBarSymbol *symbol=nil;

    for (symbol in results)

        break;

    NSLog(@"====%@",symbol.data);

    

    [self dismissViewControllerAnimated:YES completion:nil];

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章