我一直在尝试从MacOSX 10.8.4中的C ++程序中获取屏幕截图,这是不可能的。我甚至无法获得单个像素。它甚至可能吗?
有人能帮助我吗?或者至少给我一些线索或链接。
答案 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);
}
答案 1 :(得分:-3)
如果您只想抓取窗口的图像,请尝试按下按键序列⌘ + shift + 3 将采取整个屏幕的快照,并将生成的图像放在桌面上。
用 4 替换 3 将允许您以交互方式选择屏幕区域。
最后,按⌘ + shift + 4 ,然后 space 将允许您选择一个窗口捕获。
这个page很好地描述了很多在屏幕上捕获内容的方法。