我很确定这个主题已在这里多次讨论,但我有一个非常奇怪的问题,涉及在OSX上将CGImage转换为NSBitmapImageRep(10.8和10.9)。
CGImage对象来自AVAssetImageGenerator copyCGImageAtTime:actualTime:error:方法。我目前找到了两种方法来获得我想要的东西:
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];
希望这也有效,但所得图像的蓝色通道缺失。
那么,如何在不需要图形锁定的情况下实现此转换,并且在此过程中不会丢失信息?