我期待實現一個能夠從文件(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