如何选择屏幕区域并将其保存为CGimage或CIImage?

时间:2012-01-04 11:56:01

标签: cocoa opengl screenshot cgimage

我正在创建一个应用程序来捕获屏幕的一小部分区域,并将其与保存到磁盘的图像库进行比较。几年前我在.net中编写了一个类似的应用程序,并使用了bitblt和WINAPI。性能非常重要,如果它对性能产生影响,我不介意钻研openGL。

1 个答案:

答案 0 :(得分:3)

你可以使用这样的代码:

-(NSImage*)captureImageFromRect:(NSRect)captureRect
{
    NSImage *resultingImage = nil;
    CGImageRef image;
    CGWindowID  windowID = (CGWindowID)[[self window] windowNum];
    image = CGWindowListCreateImage(NSRectToCGRect(captureRect), kCGWindowListOptionIncludingWindow|kCGWindowListOptionOnScreenBelowWindow, windowID, kCGWindowImageDefault);
    resultingImage = [[NSImage alloc] initWithCGImage:image size:NSZeroSize];
    CGImageRelease(image);
    return [resultingImage autorelease];
}