如何在不实际显示窗口的情况下创建/保存 JavaFX 饼图的图像?
JavaFX 的 **javafx.scene.chart** 包提供了创建各种图表(例如:折线图、面积图、条形图、饼图、气泡图、散点图等)的类。
要创建这些图表中的任何一个,您需要:
实例化相应的类。
设置所需的属性。
创建一个布局/组对象来容纳图表。
将布局/组对象添加到场景。
通过调用 **show()** 方法显示场景。
这将在 JavaFX 窗口上显示所需的图表。
在不显示窗口的情况下保存图像
**Scene** 类的 **snapshot()** 方法会拍摄当前场景的快照,并将其作为 **WritableImage** 对象返回。
使用 **SwingFXUtils** 类的 **FromFXImage()** 方法,您可以从获得的 **WritableImage** 获取 **BufferedImage**,并将其写入本地所需的 **文件**,如下所示:
ImageIO.write(SwingFXUtils.fromFXImage(image, null), "PNG", file);
示例
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.chart.PieChart;
import javafx.scene.image.WritableImage;
public class ChartsExample extends Application {
public void start(Stage stage) throws IOException {
//Preparing ObservbleList object
ObservableList<PieChart.Data>pieChartData =
FXCollections.observableArrayList(
new PieChart.Data("Iphone 5S", 13),
new PieChart.Data("Samsung Grand", 25),
new PieChart.Data("MOTO G", 10),
new PieChart.Data("Nokia Lumia", 22));
//Creating a Pie chart
PieChart pieChart = new PieChart(pieChartData);
pieChart.setTitle("Mobile Sales");
pieChart.setClockwise(true);
pieChart.setLabelLineLength(50);
pieChart.setLabelsVisible(true);
pieChart.setStartAngle(180);
//Creating a Group object
Scene scene = new Scene(new Group(), 595, 400);
stage.setTitle("Charts Example");
((Group) scene.getRoot()).getChildren().add(pieChart);
//Saving the scene as image
WritableImage image = scene.snapshot(null);
File file = new File("D:\JavaFX\tempPieChart.png");
ImageIO.write(SwingFXUtils.fromFXImage(image, null), "PNG", file);
System.out.println("Image Saved");
}
public static void main(String args[]){
launch(args);
}
}输出
如果您观察输出路径,您可以找到如下所示的保存图像:

广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP