Java 获取小程序的屏幕截图?
给定一个小程序对象,是否可以通过编程获得小程序窗口的“屏幕截图”(表示为BuffereImage)Java 获取小程序的屏幕截图?,java,swing,applet,awt,bufferedimage,Java,Swing,Applet,Awt,Bufferedimage,给定一个小程序对象,是否可以通过编程获得小程序窗口的“屏幕截图”(表示为BuffereImage) 您可以使用Robot.createScreenCapture(矩形边界)——但是,小程序必须经过签名才能在部署后工作 评论后- 如果您只需要小程序组件- 您可以创建一个BuffereImage并对其进行绘制-如下所示: public static BufferedImage imageFor(Component component) { BufferedImage image = new
您可以使用Robot.createScreenCapture(矩形边界)——但是,小程序必须经过签名才能在部署后工作 评论后- 如果您只需要小程序组件- 您可以创建一个BuffereImage并对其进行绘制-如下所示:
public static BufferedImage imageFor(Component component) {
BufferedImage image = new BufferedImage(component.getWidth(),
component.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
component.paint(g);
return image;
}
我不确定这是否需要对小程序进行签名…至少如果您只使用Swing组件,我认为可以创建与小程序大小相同的BuffereImage,并使用可以从BuffereImage#getGraphics()获得的图形对象调用小程序的paint方法。我这里没有模板代码来测试它是否真的有效,但我想值得一试。。必须承认我以前从未在JApplet上尝试过,但它在JFrames和JDialogs上运行良好。我想您需要
java.awt.image.PixelGrabber
。(IIRC,这是Java图形性能从1.1降到1.2的原因,尽管我可能错了。)createScreenCapture(..)为我提供了整个屏幕,包括浏览器窗口等。我只想要“小程序窗口”。
public static BufferedImage imageFor(Component component) {
BufferedImage image = new BufferedImage(component.getWidth(),
component.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
component.paint(g);
return image;
}