1

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

java.awt.Robot在 Unix 上由 支持sun.awt.X11.XRobotPeer,它遵循相应的 OpenJDK 源,使用类似于xwdutililty 使用的图像抓取功能(第 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

和图像本身: 在此处输入图像描述

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

4

2 回答 2

1

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

这是来自统一开发人员的启动板问题的详细描述:启动板对话

问题在于 unity-2d 绘制自身的方式和 XShaping 的使用。

于 2012-12-17T12:58:48.417 回答
0

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

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

所以你可以替换:

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

和:

import -window root Screenshot.root.png

注意:如果未安装,您可以imagemagick使用以下命令进入 Ubuntu:

sudo apt install imagemagick
于 2021-06-12T16:39:32.763 回答