【发布时间】:2013-07-09 23:08:26
【问题描述】:
我正在寻找一种从本质上截取整个 wxPanel 并将其保存为 PNG 的方法。关键是,没有屏幕。我需要能够“绘制”面板并在没有实际屏幕的情况下保存绘制的面板。我正在使用 Python 2.7,在 Ubuntu 12.04 上运行。
这可能吗?
【问题讨论】:
标签: python python-2.7 wxpython wxwidgets image-capture
我正在寻找一种从本质上截取整个 wxPanel 并将其保存为 PNG 的方法。关键是,没有屏幕。我需要能够“绘制”面板并在没有实际屏幕的情况下保存绘制的面板。我正在使用 Python 2.7,在 Ubuntu 12.04 上运行。
这可能吗?
【问题讨论】:
标签: python python-2.7 wxpython wxwidgets image-capture
如果根本没有屏幕,即没有 X11 显示器,那么您甚至无法启动图形化 wxWidgets 程序,所以我不确定您希望它如何工作。
如果您可以启动程序,那么您还可以使用wxClientDC 来捕获任何窗口的内容:使用其Blit() 方法将其内容复制到wxMemoryDC 中,您可以在其中选择位图最终会得到您窗口的图像。
【讨论】:
sizer = wx.BoxSizer(wx.VERTICAL)text = wx.StaticText(self, -1, "Heeeeeeerrreeeeee's a Panel!")sizer.Add(text, 1, wx.EXPAND | wx.ALL, 10)self.SetSizer(sizer)bitMap = wx.EmptyBitmap(500,500)memDCwx.MemoryDC(bitMap)clientDC = wx.ClientDC(self)clientDC.Blit(0,0,500,500,memDC,0,0)bitMap.SaveFile(fileName, wx.BITMAP_TYPE_PNG)我的图像最终为一个 500 X 500 的黑匣子。
我在这里写了一篇关于如何做这类事情的教程:
但是,正如有人已经指出的那样,如果 X(或类似的)不可用,那么您将无法生成任何类型的 GUI。或者您的意思是无头盒子(即没有显示器)而不是没有屏幕?
【讨论】:
我找到了窍门,瞧,它的名字是 VFB:http://linux.die.net/man/1/xvfb
【讨论】: