用 Python 截取一个 DirectX 游戏的截图

ale*_*uch 2 python directx screenshot

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

我有点迷茫,任何帮助将不胜感激;)。

PS:我在 Windows 7 上使用 Python 2.7.3 32 位编码。

谢谢

ssu*_*ube 5

这是一个比较复杂的话题。

实际上,以最简单的方式截取屏幕截图涉及获取后台缓冲区并将其写入文件。你的 Python DirectX 绑定应该支持从后台或前台缓冲区制作纹理和填充数据;之后图像写作由你决定。

不幸的是,进入后台缓冲区需要挂钩 DirectX 并在应用程序获得它之前拦截渲染上下文。虽然很简单,但这并没有很好的文档记录,并且需要相当多的(C++)代码来实现。您必须强制应用程序使用您控制的替代渲染上下文,然后自己截取屏幕截图。

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

编辑:如果您有兴趣这样做,我可以添加更多详细信息和一些可能有用的代码链接。我仍然不确定仅在 Python 中是否可行,但不要让它阻止您尝试。