我期待实现一个能够从文件(jpeg,bmp,无论)读取QR码并将该信息作为NSString输出的类。在OSX中使用ZXing获取QRCode数据
我遇到的问题是,每个项目似乎都围绕让iPhone用相机来完成。
我正在使用图像文件在OSX桌面上执行此操作。我试图使用ZXing中包含的Objective-C OSX项目,但是我一直无法使用它来与我自己的项目打好关系。
这样做有没有人成功?谢谢!
我期待实现一个能够从文件(jpeg,bmp,无论)读取QR码并将该信息作为NSString输出的类。在OSX中使用ZXing获取QRCode数据
我遇到的问题是,每个项目似乎都围绕让iPhone用相机来完成。
我正在使用图像文件在OSX桌面上执行此操作。我试图使用ZXing中包含的Objective-C OSX项目,但是我一直无法使用它来与我自己的项目打好关系。
这样做有没有人成功?谢谢!
所以这就是我想出来的,它似乎为我工作。
- (NSString*) movieFrameAsString:(CGImageRef)targetMovieFrame
{
@try
{
ZXCGImageLuminanceSource* luminancesource = [[ZXCGImageLuminanceSource alloc] initWithCGImage:targetMovieFrame];
ZXHybridBinarizer* binarizerInput = [[ZXHybridBinarizer alloc] init];
[binarizerInput initWithSource:luminancesource];
ZXBinaryBitmap* binarybitmapInput = [[ZXBinaryBitmap alloc] initWithBinarizer:binarizerInput];
ZXDecodeHints* decodehints = [[ZXDecodeHints alloc] init];
ZXQRCodeReader* qrcodereader = [[ZXQRCodeReader alloc] init];
ZXResult* results = [qrcodereader decode:binarybitmapInput hints:decodehints];
[luminancesource release];
[binarizerInput release];
[binarybitmapInput release];
[decodehints release];
[qrcodereader release];
return [results text];
}
@catch (ZXReaderException* rex)
{
if (![rex.reason isEqualToString:@"Could not find three finder patterns"])
{
//NSLog(@"failed to decode, caught ReaderException '%@'", rex.reason);
}
}
@catch (ZXIllegalArgumentException* iex)
{
//NSLog(@"failed to decode, caught IllegalArgumentException '%@'", iex.reason);
}
@catch (id ue)
{
//NSLog(@"Caught unknown exception: %@", ue);
}
return 0;
}
targetMovieFrame被引入,它通过过滤器混合运行它以产生二进制图像。它通过使用提示解码图像并使用QRCodeReader对象中包含的方法生成结果。然后我返回结果,这是一个NSString。其他一切只是被捕获和返回的异常。
看起来很干净。您应该自动释放对象,或者将这些释放放入@finally子句中。作为立场,你会泄漏不解码的图像。 – smparkes
我对OSX OBJC项目有更多的运气,但它仍然没有聚集在一起。我还没有找到任何成功的人! – mxisaac
我还没有使用这个特定的框架,但你可能想看看相机图像转换为UIImage的点。你可以使用它作为MacOSX实现的起点,因为UIImage发生的所有事情都可以(大致)发生在NSImage上。 – Philippe
感谢菲尔,我真的解决了这个问题,现在它的功能非常好。 – mxisaac