使用Objective c for mac的屏幕截图

时间:2009-11-06 06:46:57

标签: objective-c screen capture

有没有人知道如何在mac os中使用目标c捕获屏幕? 更具体地说,我如何捕获活动/聚焦的应用程序屏幕,然后将图像创建到指定的路径中 任何帮助都非常感谢。

3 个答案:

答案 0 :(得分:8)

@Daniel, 你不需要理解和实现整个“掠夺之子”。你只需要下面的代码。

以下功能将为您提供屏幕截图

// This just invokes the API as you would if you wanted to grab a screen shot. The equivalent using the UI would be to
// enable all windows, turn off "Fit Image Tightly", and then select all windows in the list.
CGImageRef screenShot = CGWindowListCreateImage(CGRectInfinite, kCGWindowListOptionOnScreenOnly, kCGNullWindowID, kCGWindowImageDefault);

使用以下代码将其转换为NSImage

NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:screenShot];
// Create an NSImage and add the bitmap rep to it...
NSImage *image = [[NSImage alloc] init];
[image addRepresentation:bitmapRep];
[bitmapRep release];
bitmapRep = nil;

答案 1 :(得分:4)

您是否检查过Apple的“Son of Grab”是否使用CGWindow api捕获窗口的图像?

答案 2 :(得分:1)

您还可以查看Apple的OpenGLScreenSnapshot