Objective c OSX上的CGImage到NSBitmapImageRep

Objective c OSX上的CGImage到NSBitmapImageRep,objective-c,image,cgimage,cgimageref,avassetimagegenerator,Objective C,Image,Cgimage,Cgimageref,Avassetimagegenerator,我很确定这个话题已经在这里讨论过好几次了,但是我有一个非常奇怪的问题,就是在OSX 10.8和10.9上将CGImage转换成NSBitmapImageRep CGImage对象来自AVAssetImageGenerator copyCGImageAtTime:actualTime:error:method。我目前找到了两种获得我想要的东西的方法: NSSize size = NSMakeSize(CGImageGetWidth(cGImage), CGImageGetHeight(cGImag

我很确定这个话题已经在这里讨论过好几次了,但是我有一个非常奇怪的问题,就是在OSX 10.8和10.9上将CGImage转换成NSBitmapImageRep

CGImage对象来自AVAssetImageGenerator copyCGImageAtTime:actualTime:error:method。我目前找到了两种获得我想要的东西的方法:

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];
希望这也能起作用,但是结果图像的蓝色通道丢失了

那么,我如何在不需要图形锁定的情况下实现这种转换,并且在转换过程中不丢失信息呢