2011-06-24 6 views
2

ファイル(jpeg、bmpなど)からQRコードを読み取り、その情報をNSStringとして出力できるクラスを実装しようとしています。OSXでZXingを使用してQRCodeデータを取得する

問題は、すべてのプロジェクトは、カメラでこれを行うには、iPhoneを取得する周りを回っているようです。

イメージファイルを使用してOSXデスクトップでこれを行う予定です。私はZXingに含まれているObjective-C OSXプロジェクトを使用しようとしましたが、自分のプロジェクトでうまくプレイすることができませんでした。

誰でもこれを成功させましたか?ありがとう!

+0

私はOSXのOBJCプロジェクトでもう少し運がいいですが、それでもまだ一緒に来ていません。私はこれを成功裏に完了した誰も見つけていない! – mxisaac

+0

私はこの特定のフレームワークを使用していませんが、カメラ画像がUIImageに変換される点を見たいと思うかもしれません。 UIImageに起こったことは(大体)NSImageにも起こり得るので、これをMacOSX実装の飛び降り点として使うことができます。 – Philippe

+0

Philさん、ありがとうございました。私は実際に問題を解決しましたが、今はきれいに機能しています。 – mxisaac

答えて

0

ここに私が思いついたのは、私のために働くようです。

- (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である結果を返します。それ以外のものは例外で捕まえられて返されます。

+0

きれいに見えます。オブジェクトを自動解放するか、リリースを@finally句に入れる必要があります。立てば、デコードしない画像では漏れます。 – smparkes

関連する問題