在我的程序中我使用的是Qt的功能:qApp->primaryScreen()->grabWindow(qApp->desktop()->winId(),x_offset,y_offset,w,h);
截图截图:native API vs opengl
1
A
回答
0
glReadPixels(闪光X, 闪烁Y, GLsizei宽度, GLsizei高度, GLenum格式, GLenum类型, GLvoid * data)将从位置数据开始将一块像素块读入客户端内存中。
1
为了扩展@ Zhenyi Luo的回答,这里是我过去使用的代码片段。
它还使用FreeImage导出屏幕截图。
void Display::SaveScreenShot (std::string FilePath, SCREENSHOT_FORMAT Format){
// Create Pixel Array
GLubyte* pixels = new GLubyte [3 * Window::width * Window::height];
// Read Pixels From Screen And Buffer Into Array
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
glReadPixels (0, 0, Window::width, Window::height, GL_BGR, GL_UNSIGNED_BYTE, pixels);
// Convert To FreeImage And Save
FIBITMAP* image = FreeImage_ConvertFromRawBits (pixels, Window::width,
Window::height, 3 * Window::width, 24,
0x0000FF, 0xFF0000, 0x00FF00, false);
FreeImage_Save ((FREE_IMAGE_FORMAT) Format, image, FilePath.c_str(), 0);
// Free Resources
FreeImage_Unload (image);
delete [] (pixels);
}
+0
尝试你的解决方案 - 下载freeimage,安装,复制/粘贴代码。这与之前的消息一样 - 只有零。也许我应该提醒一下:我需要从桌面读取像素,如“打印屏幕”按钮。或者,也许我不知道一些功能如何使用它) – 2015-02-07 21:03:41
相关问题
- 1. OpenGL截图Android
- 2. 截图截图和显示
- 3. .NET api文档截图?
- 4. JOGL截图
- 5. 用C使用OpenGL截取屏幕截图#
- 6. SDL OpenGL截图是黑色的
- 7. 截图使用openGL和/或X11
- 8. iOS截取tableview的截图
- 9. 如何截取android截图
- 10. 截取屏幕截图
- 11. C++截取屏幕截图
- 12. 截取iFrame的截图
- 13. IE BHO截图
- 14. 显示截图后的截图
- 15. 包含BaloonTip的截图截图
- 16. 截取Android OpenGL
- 17. 截图在ViewPager
- 18. 截图MKMapView
- 19. 邮寄截图
- 20. 屏幕截图
- 21. 自动截图?
- 22. 抓取截图
- 23. Flash截图
- 24. Tizen SDK截图
- 25. iOS XCTest截图
- 26. Scrapy Splash截图?
- 27. 截图点
- 28. HTML div截图?
- 29. ASP.NET - 截图
- 30. 以截图
谢谢你的回复!我tryed使用它,但我不知道我做对了:'unsigned char pixels [4] = {0}; glReadPixels(0,0,500,500,GL_RGB,GL_UNSIGNED_INT,pixels);'。但是我总是看到'glReadPixels'后面的像素由零填充。 'glGetError'返回0. – 2015-02-07 00:06:28
你只能通过分配一个大小为4的像素来读取一个像素,但是你的输入是500 * 500像素,你通过glReadPixels得到了什么(0,0,1,1,GL_RGB,GL_UNSIGNED_INT,像素); – 2015-02-07 00:46:17
已编辑!所以,现在我仍然只取零。 – 2015-02-07 01:23:43