1

このトピックはここで何度か議論されていると確信していますが、OSX (10.8 および 10.9) での CGImage の NSBitmapImageRep への変換に関連する非常に奇妙な問題があります。

CGImage オブジェクトは、AVAssetImageGenerator copyCGImageAtTime:actualTime:error: メソッドから取得されます。私は現在、私が欲しいものを手に入れるための2つの方法を見つけました:

NSSize size = NSMakeSize(CGImageGetWidth(cGImage), CGImageGetHeight(cGImage));
NSImage *nsImage = [[NSImage alloc] initWithCGImage:cGImage size:size];

[nsImage lockFocus];
NSBitmapImageRep *bitmap = [[[NSBitmapImageRep alloc] initWithFocusedViewRect:NSMakeRect(0.0, 0.0, [nsImage size].width, [nsImage size].height)] autorelease];
[nsImage unlockFocus];
[nsImage release];

これは適切に動作しますが、やや遅いです。また、データを操作したいだけの場合、グラフィックコンテキストをロックする意味がわかりません...

私も次のことを試しました:

bitmap = [[[NSBitmapImageRep alloc] initWithCGImage:cGImage] autorelease];

これも機能することを願っていますが、結果の画像の青色チャネルが欠落しています。

では、グラフィックのロックを必要とせず、プロセス中に情報を失うことなく、この変換を実現するにはどうすればよいでしょうか?

4

0 に答える 0