Java 获取小程序的屏幕截图?

Java 获取小程序的屏幕截图?,java,swing,applet,awt,bufferedimage,Java,Swing,Applet,Awt,Bufferedimage,给定一个小程序对象,是否可以通过编程获得小程序窗口的“屏幕截图”(表示为BuffereImage) 您可以使用Robot.createScreenCapture(矩形边界)——但是,小程序必须经过签名才能在部署后工作 评论后- 如果您只需要小程序组件- 您可以创建一个BuffereImage并对其进行绘制-如下所示: public static BufferedImage imageFor(Component component) { BufferedImage image = new

给定一个小程序对象,是否可以通过编程获得小程序窗口的“屏幕截图”(表示为BuffereImage)


您可以使用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;
}