Springboot Echarts生成图片保存到本地

这篇博客介绍了如何在Springboot项目中利用Echarts库生成各种类型的图表,包括饼图、柱状图和线图,并将这些图表保存为本地图片。通过创建JFreeChart对象,设置图表参数,然后使用ChartUtilities类将图表写入文件。
摘要由CSDN通过智能技术生成

package com.xcx.spots.entity;

import java.awt.;
import java.io.File;
import java.util.
;

import javax.imageio.ImageIO;

import com.xcx.spots.controller.api.JiffCDemo;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;

import java.util.List;
import java.util.Map.Entry;

public class BingUtils {

public static String  createPort(String title, Map<String, Double> datas, Font font){
    try {
        //如果不使用Font,中文将显示不出来

        DefaultPieDataset pds = new DefaultPieDataset();

        //获取迭代器:
        Set<Entry<String, Double>> set =  datas.entrySet();
        Iterator iterator=(Iterator) set.iterator();
        Entry entry=null;
        while(iterator.hasNext()){
            entry=(Entry) iterator.next();
            pds.setValue(entry.getKey().toString(),Double.parseDouble(entry.getValue().toString()));
        }
        /**
         45                  * 生成一个饼图的图表
         46                  *
         47                  * 分别是:显示图表的标题、需要提供对应图表的DateSet对象、是否显示图例、是否生成贴士以及是否生成URL链接
         48                  */
        JFreeChart chart = ChartFactory.createPieChart(title, pds, true, false, true);
        //设置图片标题的字体
        chart.getTitle().setFont(font);

        //得到图块,准备设置标签的字体
        PiePlot plot = (PiePlot) chart.getPlot();

        //设置分裂效果,需要指定分裂出去的key
        plot.setExplodePercent("天使-彦", 0.1);

        //设置标签字体
        plot.setLabelFont(font);

        //设置图例项目字体
        chart.getLegend().setItemFont(font);

        /**
         66                  * 设置开始角度(弧度计算)
         67                  *
         68                  * 度    0°    30°        45°        60°        90°        120°    135°    150°    180°    270°    360°
         69                  * 弧度    0    π/6        π/4        π/3        π/2        2π/3    3π/4    5π/6    π        3π/2    2π
         70                  */
        plot.setStartAngle(new Float(3.14f / 2f));

        //设置背景图片,设置最大的背景
        Image img = ImageIO.read(new File("f:/test/1.jpg"));
        chart.setBackgroundImage(img);

        //设置plot的背景图片
        img = ImageIO.read(new File("f:/test/2.jpg"));
        plot.setBackgroundImage(img);

        //设置plot的前景色透明度
        plot.setForegroundAlpha(0.7f);

        //设置plot的背景色透明度
        plot.setBackgroundAlpha(0.0f);

        //设置标签生成器(默认{0})
        //{0}:key {1}:value {2}:百分比 {3}:sum
        plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}({1}道题)/{2}"));

        //将内存中的图片写到本地硬盘
        UUID uuid = UUID.randomUUID();
        ChartUtilities.saveChartAsJPEG(new File("C:/Users/nh/Documents/a/spots/src/main/resources/static/images/"+uuid+".png"), chart, 600, 300);
        String s="C:/Users/nh/Documents/a/spots/src/main/resources/static/images/"+uuid+".png";
        return s;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
public static void main(String[] args) {
    Font font = new Font("新宋体", Font.BOLD, 15);
    Map<String, Double> map=new HashMap<String, Double>();
    map.put("A(优秀)", (double) 1000);
    map.put("B(良好)", (double) 700);
    map.put("C(及格)", (double) 600);
    map.put("D(不及格)", (double) 400);
  String s=  BingUtils.createPort("超神学院女神投票结果", map, font);
    System.out.println(s);
}

}
package com.xcx.spots.entity;

import org.apache.commons.lang.StringUtils;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
import java.awt.
;
import java.io.File;
import java.io.FileOutputStream;

/**

  • @Pr
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值