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

xwd/java.awt.Robot捕获黑色窗口(除unity2d外壳外的所有东西都是黑色的),java,screenshot,openjdk,ubuntu-unity,Java,Screenshot,Openjdk,Ubuntu Unity,今天,我遇到了一个奇怪的问题:java.awt.Robot捕获黑色区域,而不是图像内容。我正在使用Ubuntu 12.04和OpenJDK6/7 Unix上的java.awt.Robot受sun.awt.X11.XRobotPeer支持, 其使用的图像采集功能与xwdutility(第92-162行)使用的功能类似 因此,我运行了以下命令: xwd -root -out test.screen.root.xwd 然后用gimp打开了这个文件。以下是我得到的: 然后我试着: xwd -root

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

Unix上的
java.awt.Robot
sun.awt.X11.XRobotPeer
支持, 其使用的图像采集功能与
xwd
utility(第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
还有图像本身:


这是什么原因造成的?如何修复它?

似乎解决这一问题的唯一方法是使用您自己的屏幕快照本机实现

以下是unity devs在启动板上对问题的详细描述:


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

解决这一问题的唯一方法似乎是使用自己的屏幕快照本地实现

以下是unity devs在启动板上对问题的详细描述:


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

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

另一种解决方案是使用
imagemagick
软件包中的
import
命令拍摄屏幕截图

因此,您可以直接替换:

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

导入-窗口根屏幕截图.root.png

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

xwd -root -out test.screen.root.xwd
sudo apt安装imagemagick

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

另一种解决方案是使用
imagemagick
软件包中的
import
命令拍摄屏幕截图

因此,您可以直接替换:

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

导入-窗口根屏幕截图.root.png

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

xwd -root -out test.screen.root.xwd
sudo apt安装imagemagick

我会在Oracle的官方JDK上试用您的代码,如果不起作用,那么就在Windows上的Oracle官方JDK上试用。如果其中任何一个与您的代码一起工作,那么请提交一份bug报告。要么反对openJDK,要么反对官方的。如果这些都不适用于您的代码,那么请修复您的代码。我在OpenJDK6/7和OracleJDK6/7上尝试过。这是Ubuntu linux唯一的问题。Robot在Windows上按预期工作。unity标记用于Microsoft unity。请不要误用它。我会在Oracle的官方JDK上试用您的代码,如果这不起作用,那么就在Oracle的官方JDK上的Windows上试用。如果其中任何一个与您的代码一起工作,那么请提交一份bug报告。要么反对openJDK,要么反对官方的。如果这些都不适用于您的代码,那么请修复您的代码。我在OpenJDK6/7和OracleJDK6/7上尝试过。这是Ubuntu linux唯一的问题。Robot在Windows上按预期工作。unity标记用于Microsoft unity。请不要误用它。