在Linux(虚拟机客机)中使用Python截屏

0 投票
1 回答
527 浏览
提问于 2025-04-18 05:15

根据这个类似的问题的回答,我尝试运行了这段代码

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虚拟机里运行的原因,还是有其他的原因呢?

1 个回答

3

我觉得问题出在虚拟机上,至少对我来说是这样的。

要找出哪个部分出了问题,有几个步骤可以尝试,但大多数问题都是和虚拟机的显示有关,特别是颜色映射的问题。所以首先可以使用:

 gtk.gdk.colormap_get_system() 

来获取要使用的颜色映射,然后把它替换到原来的代码里。看看有没有变化。

如果这样还是没解决问题,我建议你试试以下几点:

关闭你的视频加速 <====大多数问题在这里能解决

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

确保你有最新版本的 pyscreenshot,然后再试一次截图

如果还是不行,告诉我,我可以给你详细的步骤(虽然内容比较长,而且有点跳跃,但几乎涵盖了所有相关的问题)。

撰写回答