Objective c 在OSX中使用ZXing获取QRCode数据
我希望实现一个类,能够从文件(jpeg、bmp等)中读取二维码,并将该信息作为NSString输出 我遇到的问题是,每个项目似乎都围绕着让iPhone用摄像头来完成这项工作 我希望在OSX桌面上用一个图像文件完成这项工作。我曾尝试使用ZXing附带的Objective-COSx项目,但我无法让它与我自己的项目配合得很好Objective c 在OSX中使用ZXing获取QRCode数据,objective-c,macos,qr-code,zxing,Objective C,Macos,Qr Code,Zxing,我希望实现一个类,能够从文件(jpeg、bmp等)中读取二维码,并将该信息作为NSString输出 我遇到的问题是,每个项目似乎都围绕着让iPhone用摄像头来完成这项工作 我希望在OSX桌面上用一个图像文件完成这项工作。我曾尝试使用ZXing附带的Objective-COSx项目,但我无法让它与我自己的项目配合得很好 有人成功地做到了这一点吗?谢谢 这就是我的想法,它似乎对我有用 - (NSString*) movieFrameAsString:(CGImageRef)targetMovieF
有人成功地做到了这一点吗?谢谢 这就是我的想法,它似乎对我有用
- (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。其他的一切都是被捕获并返回的异常。所以这就是我的想法,它似乎对我有用
- (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。其他一切都是捕获并返回的异常。我在OSX OBJC项目上有点运气,但它仍然没有结合在一起。我还没有找到任何人成功地做到这一点!我没有使用这个特定的框架,但是您可能希望查看相机图像转换为UIImage的点。您可以将其作为MacOSX实现的起点,因为发生在UIImage上的任何事情都可能(大致)发生在NSImage上。谢谢Phil,我实际上解决了这个问题,现在它运行得很好。我为zxing做了大多数OS X项目文件和分解。这是相当新的,几乎没有记录。请随时向发布问题和/或贡献。嘿,斯帕克斯!肯定我看到OSX项目的进展并不顺利。我所尝试的(我可以想象)是相对简单的。但我很乐意尽我所能为你们做出贡献,以帮助其他新来者。我在OSX OBJC项目上有点运气,但它仍然不在一起。我还没有找到任何人成功地做到这一点!我没有使用这个特定的框架,但是您可能希望查看相机图像转换为UIImage的点。您可以将其作为MacOSX实现的起点,因为发生在UIImage上的任何事情都可能(大致)发生在NSImage上。谢谢Phil,我实际上解决了这个问题,现在它运行得很好。我为zxing做了大多数OS X项目文件和分解。这是相当新的,几乎没有记录。请随时向发布问题和/或贡献。嘿,斯帕克斯!肯定我看到OSX项目的进展并不顺利。我所尝试的(我可以想象)是相对简单的。但我愿意尽我所能为你们做贡献,帮助其他新来者。看起来很干净。您应该自动释放对象,或者将释放放在@finally子句中。就目前情况而言,你会泄露未解码的图像。看起来很干净。您应该自动释放对象,或者将释放放在@finally子句中。目前,您将泄漏未解码的图像。