CGImage для NSBitmapImageRep на OSX
Я почти уверен, что эта тема обсуждалась здесь несколько раз, но у меня есть очень странная проблема, связанная с преобразованием CGImage в NSBitmapImageRep в OSX (10.8 и 10.9).
Объект 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];
Что, надеюсь, тоже работает, но канал синего цвета на полученном изображении отсутствует.
Итак, как мне добиться этого преобразования, не требуя графической блокировки и не теряя информацию во время процесса?