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

标签 cocoa opengl screenshot cgimage

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

最佳答案

您可以使用如下代码:

-(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];
}

关于cocoa - 如何选择屏幕区域并将其另存为 CGimage 或 CIImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8726478/

相关文章:

objective-c - NSOperation : how to pause and resume 操作

objective-c - Mac 应用内购买 - 接收商店套件响应不同的线程

C++11 线程,在主线程上运行

windows-phone-7 - 我们可以使用 Blackberry 和 Windows 7 SDK 以编程方式截取屏幕截图吗?

objective-c - 有没有办法通过 XPC 传递任意结构?

ios - NSData的内容是单独引用计数的吗?

opengl - glBindAttribLocation,着色器中不存在名称参数

opengl - 如何将投影点转换为屏幕坐标(视口(viewport)矩阵)

Android 在其他设备上共享显示

android - 在 android ics 中禁用屏幕截图