OSX上的NSBitmapImageRep的CGImage

时间:2014-04-17 10:09:02

标签: objective-c image cgimage cgimageref avassetimagegenerator

我很确定这个主题已在这里多次讨论,但我有一个非常奇怪的问题,涉及在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];

希望这也有效,但所得图像的蓝色通道缺失

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

0 个答案:

没有答案