Ottenere una schermata di un applet?
-
19-09-2019 - |
Domanda
Dato un oggetto Applet, è possibile ottenere un programatically "schermata" della finestra dell'applet (rappresentato come dire una BufferedImage)?
JApplet applet = this;
// ... code here ...
BufferedImage screenshotOfApplet = ...;
Soluzione
Si potrebbe utilizzare Robot.createScreenCapture(Rectangle bounds)
- tuttavia, l'applet dovrebbe essere firmato per permettere questo al lavoro una volta distribuito
Dopo i commenti -
Se si desidera solo il componente di applet -
È possibile creare un BufferedImage e dipingere ad esso - qualcosa di simile a questo:
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;
}
Non sono sicuro se questo richiederebbe l'applet da firmare o no ...
Altri suggerimenti
Almeno se si sta utilizzando solo componenti Swing, suppongo che sarebbe stato possibile creare una BufferedImage della stessa dimensione come l'applet e chiamare il metodo paint dell'applet con l'oggetto Graphics che si può ottenere da BufferedImage # getGraphics () . Non ho alcun codice del modello qui per verificare se funziona davvero, ma credo che la pena di provare.
schermo Immagine . Devo ammettere che non ho mai provato su un JApplet prima, ma funziona bene su JFrames e JDialogs.
Penso che si desidera java.awt.image.PixelGrabber
. (IIRC, che era dietro il rallentamento massiccia è Java prestazioni grafiche 1,1-1,2, anche se potrei sbagliarmi.)