xwd / java.awt.Robot捕获黑色窗口(除了unity2d shell之外的所有东西都是黑色的)

时间:2012-11-21 12:55:28

标签: java screenshot openjdk ubuntu-unity

今天,我遇到了一个奇怪的问题:java.awt.Robot捕获黑色区域,而不是图像内容。我正在使用Ubuntu 12.04和OpenJDK6 / 7。

Unix上的

java.awt.Robotsun.awt.X11.XRobotPeer支持, 在corresponding OpenJDK sources之后,使用类似于xwd utililty使用的图像抓取功能(第92-162行)。

所以,我运行了以下命令:

xwd -root -out test.screen.root.xwd

然后用gimp打开这个文件。这是我得到的:

enter image description here

然后我尝试了:

xwd -root | xwdtopnm | pnmtopng > Screenshot.root.png

我得到以下结果: 控制台输出:

xwdtopnm: writing PPM file
libpng warning: Invalid sBIT depth specified

图像本身: enter image description here

这会导致什么?我该如何解决?

2 个答案:

答案 0 :(得分:1)

似乎解决此问题的唯一方法是使用您自己的原生屏幕截图实现。

以下是来自unity devs的启动板问题的详细说明:launchpad conversation

问题在于unity-2d吸引自己以及使用XShaping的方式。

答案 1 :(得分:0)

我有同样的错误信息。显然,它与 xwdtopnm 不能很好地处理屏幕的颜色深度有关 - 导致生成的 png 文件损坏。

另一种解决方案是使用 import 包中的 imagemagick 命令截取屏幕截图。

所以你可以替换:

xwd -root | xwdtopnm | pnmtopng > Screenshot.root.png

与:

import -window root Screenshot.root.png

注意:如果未安装,您可以在 Ubuntu 上使用以下命令获取 imagemagick

sudo apt install imagemagick