echart生成图片

一、第一种方法

1、页面  

 var picBase64Info = myChart1.getDataURL();

2、后台

    @RequestMapping("/downLoadWord")
    @ResponseBody
    public DialogMsg downLoadWord(HttpServletRequest request, String picBase64Info,
                                  HttpServletResponse response) {
        DialogMsg resultMsg = new DialogMsg();
        String barImgPath = EchartsToImg.echartsToImg(request, picBase64Info);
        System.out.println(barImgPath);
        return resultMsg;
    }

3、我创建了工具类EchartsToImg,这是里面的方法

public static String echartsToImg(HttpServletRequest request, String picBase64Info) {
        String basePath = HTTP_URL_LOCATION;
        String imgPath = "E:/tomcat/apache-tomcat-7.0.67/webapps/bph_sp/upload/echartsImg/";
        String todayFolder = FileUtils.getDailyFilePath();
        File path = new File(imgPath + todayFolder);
        if (!path.exists()) {
            path.mkdirs();
        }
        long imgName = System.nanoTime();
        String filePath = imgPath + todayFolder + imgName + ".png";
        //获取图片的base64字符串,转换为数组
        String[] picBase64InfoArray = picBase64Info.split(",");
        String imgStr = picBase64InfoArray[1];
        BASE64Decoder decoder = new BASE64Decoder();
        OutputStream out;
        try {
            byte[] imgByte = decoder.decodeBuffer(imgStr);
            for (int i = 0; i < imgByte.length; i++) {
                if (imgByte[i] < 0) {
                    imgByte[i] += 256;
                }
            }
            out = new FileOutputStream(filePath);
            out.write(imgByte);
            out.flush();
            out.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        return filePath;
    }

二、第二种方法,后台生成

1、需要jar包

        <dependency>
            <groupId>org.jfree</groupId>
            <artifactId>jfreechart</artifactId>
            <version>1.0.19</version>
        </dependency>

2、后台方法

public static void main(String[] args) {
        //exportDoc();
        DefaultPieDataset pds = new DefaultPieDataset();
        pds.setValue("00点-04点", 100);
        pds.setValue("04点-08点", 200);
        pds.setValue("08点-12点", 300);
        pds.setValue("12点-16点", 400);
        pds.setValue("16点-20点", 500);
        pds.setValue("20点-24点", 600);
        String filePath = "d:/pie.png";
        createPieChart(pds, filePath, "11");
    }

public static void createPieChart(DefaultPieDataset pds, String filePath, String pieName) {
        try {
            // 分别是:显示图表的标题、需要提供对应图表的DateSet对象、是否显示图例、是否生成贴士以及是否生成URL链接
            JFreeChart chart = ChartFactory.createPieChart(pieName, pds, false, false, true);
            // 如果不使用Font,中文将显示不出来
            java.awt.Font font = new java.awt.Font("宋体", Font.BOLD, 12);
            // 设置图片标题的字体
            chart.getTitle().setFont(font);
            // 得到图块,准备设置标签的字体
            PiePlot plot = (PiePlot) chart.getPlot();
            // 设置标签字体
            plot.setLabelFont(font);
            plot.setStartAngle(new Float(3.14f / 2f));
            // 设置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})"));
            // 将内存中的图片写到本地硬盘
            ChartUtilities.saveChartAsJPEG(new File(filePath), chart, 600, 300);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值