用Python拍摄DirectX游戏的屏幕截图

用Python拍摄DirectX游戏的屏幕截图,python,directx,screenshot,Python,Directx,Screenshot,我正在寻找一种用Python拍摄DirectX游戏截图的方法。我已经尝试过使用PIL和其他东西,但最终我只得到了黑色的屏幕截图。我看到directpython11项目提供了一个Python绑定到一些DirectX东西,但我没有找到任何与外部DirectX应用程序屏幕截图相关的东西 我有点迷路了,任何帮助都将不胜感激 PS:我在Windows7上使用Python 2.7.3 32位编码 谢谢这是一个相当复杂的话题 实际上,以最简单的方式拍摄屏幕截图,需要抓取backbuffer并将其写入文件。Py

我正在寻找一种用Python拍摄DirectX游戏截图的方法。我已经尝试过使用PIL和其他东西,但最终我只得到了黑色的屏幕截图。我看到directpython11项目提供了一个Python绑定到一些DirectX东西,但我没有找到任何与外部DirectX应用程序屏幕截图相关的东西

我有点迷路了,任何帮助都将不胜感激

PS:我在Windows7上使用Python 2.7.3 32位编码


谢谢这是一个相当复杂的话题

实际上,以最简单的方式拍摄屏幕截图,需要抓取backbuffer并将其写入文件。PythonDirectX绑定应该支持制作纹理,并从后缓冲区或前缓冲区填充数据;在那之后,图像的书写取决于你

不幸的是,要访问backbuffer,需要在应用程序获得渲染上下文之前挂起DirectX并拦截它。虽然简单,但这不是很好的文档化,需要一个适当的C++代码来实现。您必须强制应用程序使用您控制的备用渲染上下文,然后自己拍摄屏幕截图

据我所知,这种拦截的基本原理不能用纯Python完成。您可能能够找到一种方法,使用显示编解码器在屏幕交付给合成器后捕获屏幕,或者您可以使用现有的DirectX钩子并实现最小IPC来捕获数据并将其馈送到Python中进行处理和写入文件


编辑:如果您对此感兴趣,我可以添加更多细节和一些代码链接,这可能会有所帮助。我仍然不确定仅在Python中是否可行,但请不要因此而停止尝试。

当然,我一定会看一看。我会抓取更多信息,并在回家后很快编辑它。