我正在研究iOS应用程序,我有兴趣将一些已开发和测试的条形码扫描仪嵌入其中。我尝试了zxing,但这从未提取出数字。我的目标是扫描此图像并从中获取24个字符。
如果没有已开发的东西,我想自己建一个。我应该如何开始从头开始创建一维条码?
使用zxing我现在正在使用这段代码。
- (IBAction)scanPressed:(id)sender {
ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:YES];
zxing::oned::Code128Reader *code128Reader = new zxing::oned::Code128Reader();
MultiFormatOneDReader *mfReader = [[MultiFormatOneDReader alloc] initWithReader:code128Reader];
NSSet *readers = [[NSSet alloc ] initWithObjects:mfReader,nil];
[mfReader release];
widController.readers = readers;
[readers release];
NSBundle *mainBundle = [NSBundle mainBundle];
widController.soundToPlay =
[NSURL fileURLWithPath:[mainBundle pathForResource:@"beep-beep" ofType:@"aiff"] isDirectory:NO];
[self presentModalViewController:widController animated:YES];
[widController release];
}
答案 0 :(得分:3)
我首先尝试了ZXing SDK,但它没有用。然后我尝试了ZBar SDK,效果非常棒。
如果以后某人需要同样的东西我将发布帮助我使其工作的链接。
答案 1 :(得分:2)
如果这是" Code 128"条形码,注意代码的变体。
例如,如果使用zxing,您成功扫描了代码,但解码后的值与条形码下的数字不匹配,可能是因为zxing成功解码了条形码字节,但没有使用预期的字母表。
Code 128有三种变体:
"!#$%&'()*+.-/0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
"!#$%&'()*+.-/0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`` abcdefghijklmnopqrstuvwxyz{|}~
0-9
也许zxing返回条形码的128-A或128-B解释而不是128-C变体?在这种情况下,这意味着扫描工作正常,但您可以强制使用条形码格式,以便正确解释。
答案 2 :(得分:1)
也许我错了,iphone的zxing代码库只允许QR码。 来自网站http://code.google.com/p/zxing/
还有其他模块提供和/或 间歇性维护:
zxing.appspot.com: The source behind our web-based barcode generator csharp: Partial C# port cpp: Partial C++ port **iphone: iPhone client + port to Objective C / C++ (QR code only)** jruby: Ruby wrapper actionscript: partial port to Actionscript