10.5で機能するこれを行う簡単な方法はありますか?
10.6では、nsImage CGImageForProposedRectを使用できます:NULLコンテキスト:NULLヒント:NULL
1bの白黒画像(グループ4 TIFFなど)を使用していない場合、ビットマップを使用できますが、cgbitmapsはその設定を好まないようです...これを行う一般的な方法はありますか?
CGImagesだけを追加したいように見えるIKImageViewがあるので、これを行う必要がありますが、持っているのはNSImagesだけです。現在、私はプライベートsetImage:(NSImage *)メソッドを使用していますが、実際には使用していません...
このページ で次の解決策が見つかりました:
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+のようですので、問題ないはずです。
[これは長い道のりです。古いバージョンのOSXをまだサポートしている場合にのみ、これを行う必要があります。10.6以降が必要な場合は、 代わりにCGImage
メソッドを使用してください 。]
Snow Leopardの時点では、NSImageにCGImageForProposedRect:context:hints:
メッセージを送信することで、 画像にCGImageを作成するように依頼する ができます。
- 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];
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];