2013-04-03 3 views
1

무료 바코드 리더 앱을 만들고 있습니다. 디코딩 할 무료 SDK가 Datamatrix, QR, Aztec, UPC, EAN 바코드를 찾고 있습니다. 지금 당장 ZBar SDK를 구현했습니다. QR, UPC 및 EAN을 성공적으로 탐지합니다. 나는iOS의 다양한 바코드 리더 무료 SDK

ZbarThis link

ZXingOBjC

을 테스트 그러나이 중 어느 것도 제대로 아즈텍을 감지 할 수 없습니다. 데이터 매트릭스, UPC, EAN 및 QR을 통해 Redlaser는 매우 효과적 이었지만 지금은 무료가 아닙니다.

이제 App Store에서 내 앱을 무료로 유지하려는 경우 지불하지 않고 네 개의 모든 바코드를 감지 할 수있는 무료 SDK가 있습니까?

P.S 최신 iOS와 스캐너의 호환성을 원합니다.

+1

https://code.google.com/p/zxing/ 지브라 크로싱? – borrrden

+0

죄송합니다, Android/Java라고 말한 것을 잊어 버렸습니다 (소스 코드는 iOS 버전 임) – borrrden

+0

나는 좋은 코드에 동의하지만 Aztec cod와 내가 멈춘 곳을 검사하지 않습니다. 나머지 모두를 위해 그것은 매력처럼 작동한다. 그러나 어딘가에서 나는 Aztec를 위해 그것을 어려워하는 것을 안다. – xrnd

답변

1

일부 작업에서는 zint를 사용하여이 작업을 수행 할 수 있습니다. https://github.com/samlown/zint/blob/master/backend/aztec.c 앱에서 이것을 사용했습니다. 죄송합니다,이보다 더 많은 코드를 공유 할 수 없습니다 오전 : 는 그런 다음

void dataProviderReleased (void *info, const void *data, size_t size) { 
    struct barcode_symbol *my_symbol = info; 
    Barcode_Delete(my_symbol); 
} 

+ (UIImage *)aztecBarcodeImageFromString:(NSString *)s scale:(CGFloat)scale { 
    UIImage *image = nil; 
    int errorCode = 0; 
    struct barcode_symbol *my_symbol; 

    if (s == nil) { 
     return nil; 
    } 

    unsigned char *unicodeCharPtr = (unsigned char *)[s cStringUsingEncoding:NSUTF8StringEncoding]; 

    LogInfo(@"Creating barcode image for string: %@", s); 

    my_symbol = Barcode_Create(); 

    my_symbol->output_options = 0; 

    //my_symbol->output_options = BARCODE_BOX; //For a box around the bar code 
    my_symbol->scale = scale; 
    my_symbol->symbology = BARCODE_AZTEC; 

    my_symbol->input_mode = UNICODE_MODE; 

    errorCode = Barcode_Encode(my_symbol, unicodeCharPtr, 0); 

    if (errorCode == 0) { 
     errorCode = Barcode_Buffer(my_symbol, 0); 

     if (errorCode == 0) { 

      int numberOfComponents = 3; 
      long imgSizePerRow = numberOfComponents * my_symbol->bitmap_width; 
      long imgSize = imgSizePerRow * my_symbol->bitmap_height; 

      CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); 

      //The dataProviderReleased method is responsible for deallocating the ZBarCode with the corresponding image data 
      CGDataProviderRef providerRef = CGDataProviderCreateWithData(my_symbol, my_symbol->bitmap, imgSize, dataProviderReleased); 

      CGImageRef imageRef = CGImageCreate(my_symbol->bitmap_width, my_symbol->bitmap_height, 8, numberOfComponents * 8, 
               imgSizePerRow, colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaNone, 
               providerRef, NULL, NO, kCGRenderingIntentDefault); 

      image = [UIImage imageWithCGImage:imageRef]; 

      CGColorSpaceRelease(colorSpace); 
      CGDataProviderRelease(providerRef); 
      CGImageRelease(imageRef); 
     } else { 
      LogWarn(@"Could not buffer barcode, error=%d", errorCode); 
      Barcode_Delete(my_symbol); 
     } 

    } else { 
     LogWarn(@"Could not encode barcode, error=%d", errorCode); 
     Barcode_Delete(my_symbol); 
    } 

    return image; 
} 
+0

잘 코드를 공유 할 수는 없지만 아즈텍 코드를 사용하는 방법을 안내 할 수 있다면 도움이 될 것입니다. 이 파일은 유용하지만 사용법을 이해할 수있는 예제는 아닙니다. – xrnd

+0

내 awnser에 코드 스 니펫을 추가했습니다. –

1

당신은 사용자 정의 스캔 별도의 클래스에 아래의 코드를 넣어 바코드, 아즈텍, 일반적인, 글꼴, GS1, RS 및 BMP 클래스를 포함 ZBar 스캐너는 그냥 월 U 도움이 노력이

-(void)scanProductBarCode 
{ 
    ZBarReaderViewController *reader = [ZBarReaderViewController new]; 
    reader.readerDelegate = self; 

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
     reader.supportedOrientationsMask = ZBarOrientationMaskLandscape; 
    else 
     reader.supportedOrientationsMask = ZBarOrientationMaskPortrait; 

    ZBarImageScanner *scanner = reader.scanner; 
    [scanner setSymbology: ZBAR_UPCA config: ZBAR_CFG_ENABLE to: 1]; 
    [scanner setSymbology: ZBAR_CODE39 config: ZBAR_CFG_ADD_CHECK to: 0]; 
    [scanner setSymbology:ZBAR_QRCODE config:ZBAR_CFG_ADD_CHECK to:1]; 
    [scanner setSymbology:ZBAR_EAN13 config:ZBAR_CFG_ADD_CHECK to:1]; 

    [self presentModalViewController:reader animated:YES]; 
} 

처럼 좀 더 심볼로지을 설정할 수있다.

+0

이 제안에 동의합니다. ZBar는 EAN, UPC 및 QR과 함께 정말 훌륭하게 작동하지만 Datamatrix 및 Eztec에 대해서는 작동하지 않습니다. 설정이 잘 작동합니다. Zbar에서 Eztec 및 Datamatrix에 대한 기호가 없으므로 유용하지 않습니다. – xrnd