web-dev-qa-db-ja.com

NSImage *をCGImageRefに変換しますか?

10.5で機能するこれを行う簡単な方法はありますか?

10.6では、nsImage CGImageForProposedRectを使用できます:NULLコンテキスト:NULLヒント:NULL

1bの白黒画像(グループ4 TIFFなど)を使用していない場合、ビットマップを使用できますが、cgbitmapsはその設定を好まないようです...これを行う一般的な方法はありますか?

CGImagesだけを追加したいように見えるIKImageViewがあるので、これを行う必要がありますが、持っているのはNSImagesだけです。現在、私はプライベートsetImage:(NSImage *)メソッドを使用していますが、実際には使用していません...

15
Brian Postow

このページ で次の解決策が見つかりました:

NSImage* someImage;
// create the image somehow, load from file, draw into it...
CGImageSourceRef source;

source = CGImageSourceCreateWithData((CFDataRef)[someImage TIFFRepresentation], NULL);
CGImageRef maskRef =  CGImageSourceCreateImageAtIndex(source, 0, NULL);

すべての方法は10.4+のようですので、問題ないはずです。

30
pheelicks
17
Peter Hosey

Snow Leopardの時点では、NSImageにCGImageForProposedRect:context:hints:メッセージを送信することで、 画像にCGImageを作成するように依頼する ができます。

16
Peter Hosey

- CGImageForProposedRect:context:hints:を使用するためのより詳細な回答は次のとおりです。

NSImage *image = [NSImage imageNamed:@"image.jpg"];

NSRect imageRect = NSMakeRect(0, 0, image.size.width, image.size.height);

CGImageRef cgImage = [image CGImageForProposedRect:&imageRect context:NULL hints:nil];
14
Kane Cheshire

CGImageForProposedRect:context:hints: ..を使用してこれを実行しました.

NSImage *image; // an image
NSGraphicsContext *context = [NSGraphicsContext currentContext];
CGRect imageCGRect = CGRectMake(0, 0, image.size.width, image.size.height);
NSRect imageRect = NSRectFromCGRect(imageCGRect);
CGImageRef imageRef = [image CGImageForProposedRect:&imageRect context:context hints:nil];
1
simioliolio