今天,我遇到了一个奇怪的问题:java.awt.Robot
捕获黑色区域,而不是图像内容。我正在使用Ubuntu 12.04和OpenJDK6 / 7。
java.awt.Robot
由sun.awt.X11.XRobotPeer
支持,
在corresponding OpenJDK sources之后,使用类似于xwd
utililty使用的图像抓取功能(第92-162行)。
所以,我运行了以下命令:
xwd -root -out test.screen.root.xwd
然后用gimp打开这个文件。这是我得到的:
然后我尝试了:
xwd -root | xwdtopnm | pnmtopng > Screenshot.root.png
我得到以下结果: 控制台输出:
xwdtopnm: writing PPM file
libpng warning: Invalid sBIT depth specified
图像本身:
这会导致什么?我该如何解决?
答案 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