2016-04-19 18 views
1

Ich möchte von meinem Array ein Punktdiagramm als Bild (PNG) speichern, mit diesem Java-Programm kann ich mein Schatter-Diagramm zeigen, aber ich weiß nicht, wie ich es speichern soll. Vielleicht mit ImageIO.write und wie? kann mir jemand einen Rat geben, um dieses Problem zu lösen.Bild als PNG speichern

Danke
public class Graph extends Application { 

public void start(Stage primaryStage) { 
Pane root = new Pane(); 
int[] mydata = { 
     12, 9, 0, 1, 38, 19, 21, 72, 33, 83, 14, 10, 65, 46, 10, 17, 27, 38, 65, 98, 8, 58, 38, 79, 37, 69, 26, 15}; 

     NumberAxis xAxis = new NumberAxis(); 
NumberAxis yAxis = new NumberAxis(); 
ScatterChart scatterChart=new ScatterChart(xAxis,yAxis); 


XYChart.Series data=new XYChart.Series(); 
for (int i=0; i< mydata.length; i++) { 
    data.getData().add(new XYChart.Data(i,mydata[i])); 
}  
scatterChart.getData().addAll(data); 


root.getChildren().add(scatterChart); 
Scene scene = new Scene(root, 600, 400); 

primaryStage.setScene(scene); 
primaryStage.show(); 

File file = new File("c:\\Images\\Image.png"); 

// and now ????? 

} 
public static void main(String[] args) { 
launch(args); 
} 
} 

Antwort

0

Sie können Ihre Diagramme oder Diagramm auf ein Bild wie BufferedImage ziehen. Speichern Sie BufferedImage anschließend als Datei. Sie können so etwas versuchen:

class MyScatterPlot 
{ 
    private BufferedImage buf; 

    //Constructors, initializations not shown. 

    public void saveBufferAsImage(String pathname){ 
     String fmt = ""; 
     if(!(pathname == null || pathname.equals(""))){ 
      fmt = pathname.substring(pathname.lastIndexOf(".")+1); 
      File outputfile = new File(pathname); 
      try{ 
       ImageIO.write(buf, fmt, outputfile);   
      }catch(IOException ioe){System.out.println("Unable to save file");} 
     }  
    } 

    public void drawImage(){ 
     buf = new BufferedImage (200, 200, BufferedImage.TYPE_INT_ARGB); 
     Graphics2D g2d = buf.createGraphics(); 
     g2d.fillRect(10, 10, 150, 150); //draw your image here (example only) 
     g2d.dispose(); 
    } 
} 

Um das Diagramm als Bilddatei (wie .png) zu speichern:

MyScatterPlot plot = new MyScatterPlot(); 
plot.drawImage(); 
plot.saveBufferAsImage("MyGraph.png"); 
+0

Danke, \t Wie kann ich mein Diagramm erhöhen? wenn ich Szenen Szene = neue Szene (root, 1000, 500) setze; Ich werde gleich groß. – Lolitta

+0

Sie können Ihren Graphen einfach skalieren, wenn Sie ihn zeichnen. Fügen Sie einfach einige Berechnungen hinzu, z. B. legen Sie ein Verhältnis entsprechend dem Bildschirm fest. – user3437460

0

Wie here beschrieben, Sie Code benötigen:

... 
//and now 
WritableImage image = scatterChart.snapshot(new SnapshotParameters(), null); 
try { 
    ImageIO.write(SwingFXUtils.fromFXImage(image, null), "png", file); 
} catch (IOException e) { 
    // TODO: handle exception here 
}