JFreeChart als png abspeichern

archo95

Mitglied
Hallo Liebe Community 🙂

Ich habe schon im Internet gesucht aber es hat noch nicht funktioniert.
Das Ziel wäre, ein jFreeChart Diagramm (line Diagramm xy) als ein Bild (.png Format) abzuspeichern.

Hier mein Programm ohne dem abspeichern:

Java:
package at.htlklu.tremoranalyzer;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

import org.jfree.chart.*;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.*;
import org.jfree.data.time.Day;
import org.jfree.data.time.RegularTimePeriod;
import org.jfree.data.time.Second;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.*;
import org.jfree.util.Log;


public class GraphPanel extends JPanel {
	
	private long startTime = 0;
	/**
	 * 
	 */
	//domain = x
	//range = y
	private ChartPanel chart;
	private XYSeries head = new XYSeries("head");
	
	private XYDataset createDataset() {
	    TimeSeries series1 = new TimeSeries("Data");
	    Date date = new Date();
	    series1.add(new Day(date),46.6);
	    TimeSeriesCollection dataset = new TimeSeriesCollection();
	    dataset.addSeries(series1);
	    return dataset;
	}
	
	private XYSeriesCollection collection = new XYSeriesCollection();

	
	public GraphPanel() {
		
		this.collection.addSeries(head);
		JFreeChart diagram = ChartFactory.createXYLineChart(
				"Tremor Assesment", // chart title
				"time", // x axis label
				"tremor", // y axis label
				collection, // data
				PlotOrientation.VERTICAL,
				true, // include legend
				true, // tooltips
				false // urls
				);
		chart = new ChartPanel(diagram);
		chart.setPreferredSize(new java.awt.Dimension(800, 600));
		this.add(chart);
		this.setVisible(true);
		
		XYPlot plot = diagram.getXYPlot();
		NumberAxis TimeAxis = (NumberAxis) plot.getDomainAxis();
		

		//TimeAxis.setRange(start, start+15000);
		TimeAxis.setAutoRange(true);
		
		
		NumberAxis TremorAxis = (NumberAxis) plot.getRangeAxis();
		TremorAxis.setRange(500,1000);
		
		BufferedImage objBufferedImage= (BufferedImage) chart.createImage(600,800);
		ByteArrayOutputStream bas = new ByteArrayOutputStream();
		        try {
		            ImageIO.write(objBufferedImage, "png", bas);
		        } catch (IOException e) {
		            e.printStackTrace();
		        }
		
	}
	
	
	public void addHeadValue(double l, double value){
		this.head.add(l, value);
	}
	
}


hab mir gedacht, dass das speichern doch ganz einfach funktioniert ndem ich es einfach mit diesen Zeilen mache:

Java:
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
		ChartUtilities.saveChartAsPNG("Chart.png", chart, 1000, 700, info);

Doch dann zeigt er mir einen Fehler bei .saveChartAsPNG an, wo ich dann nicht zu einer richtigen Lösung komme. Die fehlermeldung empfiehlt mit es in writeChartAsPNG oder saveChartAsJPEG zu speichern. Doch trotz ändern funktioniert es nicht


Wäre echt dankbar wenn ihr mir, einen Java Neuling, dabei helft 🙂
Danke schon im Voraus
 
Zuletzt bearbeitet:
Ich habe schon im Internet gesucht aber es hat noch nicht funktioniert.
Schonmal auf der JFreeChart home page gesucht: Link. War der erste Treffer bei google bei der Suche nach "save jfreechart as png".
saveChartAsPNG erwartet als ersten Parameter ein File-Objekt, keinen String. Das hier müsste es tun:
ChartUtilities.saveChartAsPNG(new File("Chart.png"), chart, 1000, 700, info);
 

Neue Themen


Zurück
Oben