2011-05-05 4 views
41

QR 코드 리더 기반 응용 프로그램을 만들고 싶습니다.iPhone 용 QR 코드 리더

어떤 라이브러리를 사용하여 응용 프로그램을 만들 수 있습니까?

참고 : Google에서 검색했습니다. 항상 zxing을 받고 있습니다. 나는 zxing 프로젝트를 다운로드했다. 그러나 문제는이다. 나는 응용 프로그램을 실행합니다. 그러나 바코드 만 읽고 있습니다. QR 코드를 읽을 수있는 옵션이 없습니다.

는 ... 어떻게 이렇게 사전에

감사를 알려주세요.

+1

http://stackoverflow.com/questions/838724/barcode-framework-for-the-iphone/862656#862656이 답변은 qrcodes를 읽는 바코드 앱의 소스에 연결됩니다. 당신은 좋은 정보를 받아야합니다. –

+1

zxing은 iOS에서 QR 코드를 잘 처리합니다. 사실, 다른 코드보다 더 좋습니다. 샘플 ScanTest 응용 프로그램은 사용 방법을 보여 주며 QR 코드를 잘 디코딩합니다. – smparkes

답변

49

ZBarSDK은 다른 옵션입니다. 매우 유능한 라이브러리. iOS7에 년부터 UPDATE 2014년 1월

AVCaptureDevice는 이제 (모든 종류의) 바코드를 읽고 인간이 읽을 수있는 값을 반환 할 수있는 기능이 포함되어 있습니다. iOS7 +를 타겟팅하는 경우 이동하는 방법입니다. 물론 ZBarSDK는 pre-iOS7 지원에 여전히 유용합니다.

+1

나는 그것을 사용하여 아무 것도 발표하지 않았지만, 내가 테스트 한 것처럼 신뢰할 수있는 라이브러리는 캡쳐 (예 : 코드 하이라이트 등)를위한 꽤 좋은 모듈을 제공하며 이해하기 쉽다. –

+0

ZBarSDK는 무료 라이센스 버전입니까? 유료 앱에 ZBarSDK를 사용할 수 있습니까? – jfalexvijay

+1

http://zbar.sourceforge.net/iphone/sdkdoc/licensing.html –

3

시도해 보니 아주 좋아하고 통합하기가 쉽습니다.

또한보기 내부에서 스캐너 창의 크기를 정의 할 수 있습니다.

28

AVCaptureMetaDataOutput - 아이폰 OS 7 일부터 시작

스캔 UPC 값, QR 코드, 그리고 당신이 할 필요가 AVCaptureSession의 출력으로 설정되어 아이폰 OS 7에 새로운 AVCaptureMetaDataOutput, 모든 종류의 바코드 및 이에 따라 captureOutput:didOutputMetadataObjects:fromConnection: 메소드를 구현 :

@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 당신이 들었어요 모든 코드 지원 (그리고 아마도 몇 가지를 당신이하지 않은 것을) :

AVMetadataObjectTypeUPCECode 
AVMetadataObjectTypeCode39Code 
AVMetadataObjectTypeCode39Mod43Code 
AVMetadataObjectTypeEAN13Code 
AVMetadataObjectTypeEAN8Code 
AVMetadataObjectTypeCode93Code 
AVMetadataObjectTypeCode128Code 
AVMetadataObjectTypePDF417Code 
AVMetadataObjectTypeQRCode 
AVMetadataObjectTypeAztecCode 
+0

이것은 저에게 많은 톤과 번거 로움을 덜어주었습니다. http://www.renaudpradenc.com/?p=453 – Wirsing

+2

나는 이것을 두 번 +1 할 수 있으면 좋겠다.코드를 위해 한 번,'@ import'를 사용하기 위해 또 하나. –

+4

오리 엔테이션 변경, 백그라운드에서 다시 시작 등의 작업을 처리하는보다 완벽한 예는 https://github.com/magmatic/BMCodeScanner - 기본 AVFoundation API 사용을 참조하십시오. – SaltyNuts

0

참조 용으로 webqr.com을 사용할 수 있으며이 라이브러리를 사용하여 QR 코드를 디코딩하고 인코딩 할 수도 있습니다. Safari, Chrome, IE, Firefox와 같은 다른 브라우저의 경우이 플러그인을 추가 할 수 있습니다. 희망이 당신을 위해 전체 도움이 될 것입니다.