在Linux(虚拟机客机)中使用Python截屏
根据这个类似的问题的回答,我尝试运行了这段代码
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,然后再试一次截图
如果还是不行,告诉我,我可以给你详细的步骤(虽然内容比较长,而且有点跳跃,但几乎涵盖了所有相关的问题)。