python - 在 linux 中使用 python 截取屏幕截图(VM guest )

标签 python linux gtk virtual-machine screenshot

按照这个 similar stackoverflow question 的答案,我尝试运行这段代码

import gtk.gdk

w = gtk.gdk.get_default_root_window()
sz = w.get_size()
print "The size of the window is %d x %d" % sz
pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,False,8,sz[0],sz[1])
pb = pb.get_from_drawable(w,w.get_colormap(),0,0,0,0,sz[0],sz[1])
if (pb != None):
    pb.save("screenshot.png","png")
    print "Screenshot saved to screenshot.png."
else:
    print "Unable to get the screenshot."

但是,生成的图像是全黑的。我的环境是在 mac 上的 virtualbox 中运行的 linux mint 16。黑色图像是运行 linux vm 的结果,还是有其他原因?

最佳答案

我很确定这里的问题是 VM。至少对我来说是这样。

有几个步骤可以找出哪个部分出了问题,但大多数步骤与 VM 上的显示问题有关,而 VM 上的色图也有问题。所以首先 使用:

 gtk.gdk.colormap_get_system() 

获取要使用的颜色图并替换原始代码中的颜色图。看看有没有变化。

如果这是一个死胡同,我会建议如下:

关闭您的视频加速 <====绝大多数问题已在此处修复

回滚然后更新您的视频/图形/3d 驱动程序 <==这几乎从来不是问题

确保您拥有最新版本的 pyscreenshot 并重试截图

如果它仍然不起作用,请告诉我,我会向您发送完整的分步说明(它很长,跳来跳去很多,但它涵盖了与此问题有关的几乎所有内容。)

关于python - 在 linux 中使用 python 截取屏幕截图(VM guest ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23448048/

相关文章:

python - 如何从 matplotlib 3.3.1 获取没有填充的标记

c - 如何用 git 处理这个补丁问题?

python - 如何在 pygtk TreeView 中设置单个单元格的颜色?

linux - 如何将文本插入另一个应用程序?

python - Django : customizing FileField value while editing a model

python - 将字符串转换为python 3中的有效wordpress url以供请求库使用

python - 如果文件 1 中的 A 列不等于文件 2 中的 B 列,则删除行

linux - "Syntax error: Unterminated quoted string"和 "org.apache.commons.exec.ExecuteException: Process exited with an error: 2 (Exit value: 2)"

c++ - GTK 窗口的事件窗口的 X11 屏幕截图失败

python - 从两个不相关的系列创建 DataFrame 的最有效方法是什么?