从Max OSX中的屏幕(屏幕截图)获取像素

时间:2013-06-27 04:52:48

标签: c++ macos opengl screenshot

我一直在尝试从MacOSX 10.8.4中的C ++程序中获取屏幕截图,这是不可能的。我甚至无法获得单个像素。它甚至可能吗?

有人能帮助我吗?或者至少给我一些线索或链接。

2 个答案:

答案 0 :(得分:1)

void captureScreen(){
    CGImageRef image_ref = CGDisplayCreateImage(CGMainDisplayID()); 
    CGDataProviderRef provider = CGImageGetDataProvider(image_ref);
    CFDataRef dataref = CGDataProviderCopyData(provider);
    size_t width, height;    width = CGImageGetWidth(image_ref);
    height = CGImageGetHeight(image_ref); 
    size_t bpp = CGImageGetBitsPerPixel(image_ref) / 8;
    uint8 *pixels = malloc(width * height * bpp);
    memcpy(pixels, CFDataGetBytePtr(dataref), width * height * bpp);
    CFRelease(dataref); 
   CGImageRelease(image_ref); 
   FILE *stream = fopen("/Users/robert/Desktop/screencap.raw", "w+");
   fwrite(pixels, bpp, width * height, stream);
   fclose(stream); 
   free(pixels);
}

参考https://gist.github.com/robert-wallis/5063309

答案 1 :(得分:-3)

如果您只想抓取窗口的图像,请尝试按下按键序列 + shift + 3 将采取整个屏幕的快照,并将生成的图像放在桌面上。

4 替换 3 将允许您以交互方式选择屏幕区域。

最后,按 + shift + 4 ,然后 space 将允许您选择一个窗口捕获。

这个page很好地描述了很多在屏幕上捕获内容的方法。