2011-12-20 15 views
3

JPEGまたはPNGファイルから、生のRGBビットマップデータを抽出する必要があります。Cocoaを使用してJPEG画像からビットマップデータを取得する

私はココアに新しいんだけど、私はこのようなNSImageではを使用して画像を開くように見える:

NSString* imageName=[[NSBundle mainBundle] pathForResource:@"/Users/me/Temp/oxberry.jpg" ofType:@"JPG"]; 
NSImage* tempImage=[[NSImage alloc] initWithContentsOfFile:imageName]; 
NSBitmapImageRep* imageRep=[[[NSBitmapImageRep alloc] initWithData:[tempImage TIFFRepresentation]] autorelease]; 
unsigned char* bytes=[imageRep bitmapData]; 
int bits=[imageRep bitsPerPixel]; 

そして、ビットマップデータを取得するために多くのオプションがあるように思われる:などのBitmapImage、CGImage、

最も簡単な方法は何ですか。コードスニペットがあった場合、これは素晴らしい方法です。

ありがとうございます!

答えて

3

あなたは正しい道を歩いています。あなたが気づいたように、これを行う方法はたくさんあります。

NSImageを作成したら、ビットマップ表現を作成してそのバイトに直接アクセスできます。 NSBitmapImageRepを取得する簡単な方法はこれを行うことです。TIFFRepresentation工程を経て行く

NSBitmapImageRep* imageRep = [[[NSBitmapImageRep alloc] initWithData:[tempImage TIFFRepresentation]] autorelease]; 

unsigned char* bytes = [imageRep bitmapData]; 
int bitsPerPixel = [imageRep bitsPerPixel]; 
// etc 

直接NSImageではの表現にアクセスするよりも安全です。

+0

何かの理由で、画像がロードされていないか、bitsPerPixelの値が0になっているため、BitmapImageRepが機能していません。画像がロードされているかどうかを確認するにはどうすればいいですか(ごめんなさい、私はココアの足ではとても新しいです)。私はオリジナルの投稿のコードを編集して変更を反映させました – Bill

+0

私はそれを確認する方法を考えましたが、まだ画像を読み込めないようです。ファイルはそのフォルダ内に存在します。 – Bill

+0

デバッガでコードをステップ実行すると、何が失敗しているのかを確認できるはずです。画像がロードされない場合、tempImageはゼロになります。デバッガはあなたの友人です。 –

関連する問題