Hi,
wollte mal fragen, ob es möglich ein mit JavaFX erstelltes Node nicht auf dem Monitor auszugeben sonder in eine .jpeg zu speichern.
Allerdings sollte das direkt mit JavaFX gemacht werden (java würde auch gehn) und nicht über ein Screenshot oder sowas.
MfG
Nodes in eine .jpeg speichern
Moderator: wegus
Re: Nodes in eine .jpeg speichern
Moin!
Schau mal hier: http://blogs.sun.com/rakeshmenonp/entry ... e_as_image
Aber über Screenshot.
Hier ein Hack, (ab FX 1.2)
Beste Grüße,
Josch.
Schau mal hier: http://blogs.sun.com/rakeshmenonp/entry ... e_as_image
Aber über Screenshot.
Hier ein Hack, (ab FX 1.2)
Code: Alles auswählen
var context = FXLocal.getContext();
var nodeClass = context.findClass("javafx.scene.Node");
var getFXNode = nodeClass.getFunction("impl_getPGNode");
var sgNode = (getFXNode.invoke(context.mirrorOf(node)) as FXLocal.ObjectValue).asObject();
var g2dClass = (context.findClass("java.awt.Graphics2D") as FXLocal.ClassType).getJavaImplementationClass();
var boundsClass=(context.findClass("com.sun.javafx.geom.Bounds2D") as FXLocal.ClassType).getJavaImplementationClass();
var affineClass=(context.findClass("com.sun.javafx.geom.AffineTransform") as FXLocal.ClassType).getJavaImplementationClass();
// getContentBounds() method have different signature in JavaFX 1.2
var getBounds = sgNode.getClass().getMethod("getContentBounds",boundsClass,affineClass);
var bounds = getBounds.invoke(sgNode, new com.sun.javafx.geom.Bounds2D(), new com.sun.javafx.geom.AffineTransform()) as com.sun.javafx.geom.Bounds2D;
// Same with render() method
var paintMethod = sgNode.getClass().getMethod("render", g2dClass, boundsClass, affineClass);
var img = new java.awt.image.BufferedImage(500, 400,
java.awt.image.BufferedImage.TYPE_INT_ARGB);
var g2 =img.createGraphics();
paintMethod.invoke(sgNode,g2, bounds, new com.sun.javafx.geom.AffineTransform());
g2.dispose();
Josch.
Re: Nodes in eine .jpeg speichern
Danke werds mir anschaun.
MfG
MfG