Nodes in eine .jpeg speichern

JavaFX und die Programmierung

Moderator: wegus

Antworten
Mitch
Beiträge: 79
Registriert: 02.03.2010, 12:39

Nodes in eine .jpeg speichern

Beitrag von Mitch » 08.10.2010, 10:05

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

Benutzeravatar
arittner
Beiträge: 3229
Registriert: 05.08.2008, 07:20
Wohnort: Südniedersachsen
Kontaktdaten:

Re: Nodes in eine .jpeg speichern

Beitrag von arittner » 08.10.2010, 10:42

Moin!

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();
Beste Grüße,
Josch.
JNBB/BeanDev-Blog | Twitter@beandev
Bild
Sun Certified Specialist for NetBeans IDE

Mitch
Beiträge: 79
Registriert: 02.03.2010, 12:39

Re: Nodes in eine .jpeg speichern

Beitrag von Mitch » 13.10.2010, 11:49

Danke werds mir anschaun.
MfG

Antworten