2013-06-27 52 views
-1

我一直試圖從MacOSX 10.8.4中的C++程序獲取屏幕截圖,這是不可能的。我甚至無法獲得單個像素。它甚至有可能嗎?從Max OSX的屏幕(截圖)中獲取像素

有人可以幫我嗎?或者至少給我一些線索或鏈接。

+0

這當然是可能的 - 例如,參見[ 「搶之子」 的示例代碼(https://developer.apple.com/library/mac/#samplecode/SonOfGrab/簡介/ Intro.html)。如果您告訴我們您嘗試了什麼,我們可以給您更具體的幫助。 –

回答

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

+0

謝謝!這就是我想要的。但是,當我用Photoshop打開圖像2 RGB通道是排列的。任何線索? – user1532887

-3

如果你想要的是抓住一個窗口的圖像,請嘗試按下按鍵順序 + 轉變 + 將整個屏幕的快照,並將其放置在桌面上生成的圖像。

替換與將允許您交互式地選擇屏幕區域。

最後,按 + 轉變 + ,然後空間將允許您選擇一個窗口捕捉到。

這個page很好地描述了很多捕獲屏幕上內容的方法。

+0

感嘆;英語的含糊不清。那麼,希望這對某個人有用。 – radical7

+0

這與C++或OpenGL無關。 – TimZaman