iPhone的QR码阅读器

QR code reader for iPhone

我想创建基于QR码阅读器的应用程序。

使用哪个库,我可以创建我的应用程序?

注意:我在google中搜索。 我总是越来越zxing。 我下载了zxing项目。 但是问题是; 我运行该应用程序。 但是它只读取条形码。 没有读取QR码的选项。

请告诉我该怎么做...

提前致谢。


ZBarSDK是另一种选择。一个非常强大的库。

2014年1月更新

从iOS7开始,AVCaptureDevice现在具有读取(各种)条形码并返回人类可读值的功能。如果您的目标是iOS7 +,那么这就是要走的路。当然,ZBarSDK对于iOS7之前的支持仍然很棒。


AVCaptureMetaDataOutput-从iOS 7开始

使用iOS 7的新功能AVCaptureMetaDataOutput扫描所有品种的UPC,QR码和条形码,您所需要做的就是将其设置为AVCaptureSession的输出,并相应地实现captureOutput:didOutputMetadataObjects:fromConnection:方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 @import AVFoundation;

 AVCaptureSession *session = [[AVCaptureSession alloc] init];
 AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
 NSError *error = nil;

 AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device
                                                                error:&error];
 if (input) {
     [session addInput:input];
 } else {
     NSLog(@"Error: %@", error);
 }

 AVCaptureMetadataOutput *output = [[AVCaptureMetadataOutput alloc] init];
 [output setMetadataObjectTypes:@[AVMetadataObjectTypeQRCode]];
 [output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
 [session addOutput:output];

 [session startRunning];

 #pragma mark - AVCaptureMetadataOutputObjectsDelegate

 - (void)captureOutput:(AVCaptureOutput *)captureOutput
         didOutputMetadataObjects:(NSArray *)metadataObjects
              fromConnection:(AVCaptureConnection *)connection
   {
    NSString *QRCode = nil;
     for (AVMetadataObject *metadata in metadataObjects) {
       if ([metadata.type isEqualToString:AVMetadataObjectTypeQRCode]) {
            // This will never happen; nobody has ever scanned a QR code... ever
             QRCode = [(AVMetadataMachineReadableCodeObject *)metadata stringValue];
             break;
          }
      }

     NSLog(@"QR Code: %@", QRCode);
   }

AVFoundation支持您听说过的每一个代码(可能还没有听说过):

1
2
3
4
5
6
7
8
9
10
AVMetadataObjectTypeUPCECode
AVMetadataObjectTypeCode39Code
AVMetadataObjectTypeCode39Mod43Code
AVMetadataObjectTypeEAN13Code
AVMetadataObjectTypeEAN8Code
AVMetadataObjectTypeCode93Code
AVMetadataObjectTypeCode128Code
AVMetadataObjectTypePDF417Code
AVMetadataObjectTypeQRCode
AVMetadataObjectTypeAztecCode


尝试使用ZXingObjC并使其易于集成。

同样,您可以在视图内部定义扫描仪窗口的大小。


供您参考,您可以使用webqr.com,它的库也可以用于解码QR码和编码。但是对于Safari,Chrome,IE,Firefox等不同的浏览器,您可以为其添加插件。希望对您有帮助。