需求:使用百度的echarts生成雷达图,并上传到服务器端然后处理

使用各个工具:

一、echarts实例及文档,请查看官方地址链接地址

二、html2canvas

代码示例:

一、jsp页面:

ECharts radar

.radar {

width: 450px;

height: 450px;

}

二、showChart.js代码:

// 基于准备好的容器(这里的容器是id为main的div),初始化echarts实例

var myChart = echarts.init(document.getElementById('radar'), 'dark');

// 指定图表的配置项和数据

var option = {

// rgba设置透明度0.1

backgroundColor : 'rgba(128, 128, 128, 0)',

title : {

textStyle : {

fontStyle : 'normal',

fontWeight : 'normal',

fontSize : '14'

}

},

polar : [ {

indicator : [ {

text : '速度',

max : 100

}, {

text : '力量',

max : 100

}, {

text : '防守',

max : 100

}, {

text : '技术',

max : 100

}, {

text : '耐力',

max : 100

} ],

radius : 100

} ],

series : [ {

name : '球员指数',

type : 'radar',

itemStyle : {

normal : {

areaStyle : {

opacity : '0.9',

color : new echarts.graphic.RadialGradient(0.5, 0.5, 1, [ {

color : 'rgba(255, 215, 0, 0.9)',

offset : 0

}, {

color : '#72ACD1',

offset : 1

} ])

},

lineStyle : {

color : 'rgba(255, 215, 0, 0.9)'

}

}

}

}

]

};

myChart.showLoading(); // 数据加载完之前先显示一段简单的loading动画

var values = []; // 满意度数组

$.ajax({

type : "post",

async : true, // 异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)

url : "http://localhost/qiuyuan/canvas/data", // 获取数据

data : {},

dataType : "json", // 返回数据形式为json

success : function(result) {

// 请求成功时执行该函数内容,result即为服务器返回的json对象

if (result) {

for (var i = 0; i < result.length; i++) {

values.push(result[i]); // 挨个取出并填入数组

}

myChart.hideLoading(); // 隐藏加载动画

myChart.setOption({ // 加载数据图表

series : [ {

data : [ {

value : values,

label : {

normal : {

show : true,

formatter : function(params) {

return params.value;

}

}

}

} ]

} ]

});

}

},

error : function(errorMsg) {

// 请求失败时执行该函数

alert("图表请求数据失败!");

myChart.hideLoading();

}

})

// 使用刚指定的配置项和数据显示图表。

myChart.setOption(option);

//等待0.5秒后传送到服务器

setTimeout(function() {

$(function() {

html2canvas(document.getElementById('radar'), {

// 允许跨域

// allowTaint : true,

onrendered : function(canvas) {

var dataUrl = canvas.toDataURL("image/png");

//console.log(dataUrl);

$.ajax({

url : 'http://localhost/qiuyuan/canvas/',

type : 'POST',

data : {

base64ImgData : JSON.stringify(dataUrl)

},

error : function(XMLHttpRequest) {

alert("Error: " + XMLHttpRequest.responseText);

}

});

}

});

})

}, 500);

三、server端代码:

package com.qiuyuan.web;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.codec.binary.Base64;

import org.apache.commons.lang3.StringUtils;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;

@Controller

@RequestMapping(value = "/canvas")

public class CanvasController {

@RequestMapping("/")

public void canvas(PrintWriter writer, String base64ImgData, HttpServletResponse response) {

// 设定编码

response.setCharacterEncoding("UTF-8");

// 表示是json类型的数据

response.setContentType("application/json");

Map map = new HashMap();

boolean flag = false;

String msg = "下载失败";

try {

// 保存

String filePath = decodeBase64(base64ImgData, new File("e:\\canvas.png"));

if (StringUtils.isNotBlank(filePath)) {

flag = true;

msg = "下载成功";

}

} catch (Exception e) {

e.printStackTrace();

flag = false;

msg = "下载失败!失败原因:" + e.getMessage();

}

map.put("success", flag);

map.put("msg", msg);

writer.write(JSON.toJSONString(map));

}

@ResponseBody

@RequestMapping("/data")

public String data( HttpServletResponse response) {

// 设定编码

response.setCharacterEncoding("UTF-8");

// 表示是json类型的数据

response.setContentType("application/json");

List list = new ArrayList();

list.add(95);

list.add(80);

list.add(48);

list.add(70);

list.add(85);

Map map = new HashMap();

boolean flag = false;

String msg = "获取数据失败";

try {

// 保存

flag = true;

msg = "获取数据成功";

} catch (Exception e) {

e.printStackTrace();

flag = false;

msg = "下载失败!失败原因:" + e.getMessage();

}

map.put("success", flag);

map.put("msg", msg);

return JSON.toJSONString(list);

}

/**

* 解析Base64位信息并输出到某个目录下面.

*

* @param base64Info

* base64串

* @param file

* 生成的文件路径

* @return 文件地址

* @throws IOException

*/

private String decodeBase64(String base64Info, File file) throws IOException {

if (StringUtils.isEmpty(base64Info)) {

return null;

}

String picPath = "";

if (file != null) {

picPath = file.getPath();

}

if (StringUtils.isNotBlank(base64Info) && StringUtils.isNotBlank(picPath)) {

// base64Info数据中:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABI4AAAEsCAYAAAClh/jbAAA

// ... 在"base64,"之后的才是图片信息

String[] arr = base64Info.split("base64,");

// 将图片输出到系统某目录.

OutputStream out = null;

try {

// 使用了Apache commons codec的包来解析Base64

byte[] buffer = Base64.decodeBase64(arr[1]);

out = new FileOutputStream(file);

out.write(buffer);

} catch (IOException e) {

System.out.println("解析Base64图片信息并保存到某目录下出错!");

e.printStackTrace();

} finally {

if (out != null) {

out.close();

}

}

}

return picPath;

}

}

java 生成雷达图,生成echarts雷达图并传到Server端生成图片相关推荐

  1. echarts折线图、echarts折线图自定义样式

    html 页面引用js <script type="text/javascript" src="assets/js/echarts.min.js"> ...

  2. echarts 环形图占比_环形图_仪表盘

    Echarts 常用各类图表模板配置 注意: 这里主要就是基于各类图表,更多的使用 Echarts 的各类配置项: 以下代码都可以复制到 Echarts 官网,直接预览: 图标模板目录 Echarts ...

  3. echarts 环形图

    Echarts 常用各类图表模板配置 注意: 这里主要就是基于各类图表,更多的使用 Echarts 的各类配置项: 以下代码都可以复制到 Echarts 官网,直接预览: 图标模板目录 Echarts ...

  4. 【JFreeChart】自定义蜘蛛网图生成带刻度三角雷达图 自定义文字风格 背景色

    工作中需要生成PDF 且包含图表.iText 或其他 可以访问网页地址转PDF.但是效果不是特别理想.故用iText代码方式实现生成PDF.奈何图表又是一个问题(还是个三角形的雷达图).Java端生成 ...

  5. 在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法

    在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的值的解决方法 参考文章: (1)在vue中,Echarts雷达图中indicator的点击事件,不能改变data中的 ...

  6. Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图

    文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...

  7. java生成二维码合成背景图

    一.背景 接到个需求,要打印纸质红包,上面附二维码,然后每个红包的二维码不一样,扫描二维码去参加活动领真实的红包,需要给出对应的图片 二.代码示例 import java.awt.Graphics2D ...

  8. java使用poi操作world生成饼图,柱状图,折线图,组合图:一

    java使用poi操作world生成饼图,柱状图,折线图,组合图:一 下文和问题链接 开发前准备 准备模板 模板下载地址百度云盘:cvod 本文可用操作 组合图操作 模板效果对比填充后的效果 饼图 模 ...

  9. java使用poi操作world生成饼图,柱状图,折线图,组合图:二

    java使用poi操作world生成饼图,柱状图,折线图,组合图:二 上文和问题链接 直接上代码 maven 测试类:单图表(入口) 测试类:组合图表(入口) 工具类:组合数据类 工具类:枚举解析图表 ...

  10. Java通过JfreeChart生成转Base64图片字符串(饼图、折线图、柱状图、折线图-多条、3D柱状图、气泡图、时序图、曲线图、区域图、分布图、联合分类图、双X轴图、K线图、柱状图-横向等图)

    工具类 CreatLineChart.java package DrawLine;import java.awt.BasicStroke; import java.awt.Color; import ...

最新文章

  1. Linux的命令行界面简介
  2. 生物医学大数据处理研究探讨
  3. mysql忽略大小写配置cnetos_CentOS7下安装MYSQL8.X并设置忽略大小写
  4. Java 位运算- 十进制数值转十六进制(内存中的数据)
  5. Java业务逻辑pyqt_PyQt5 UI界面与业务逻辑分离
  6. springboot整合kafka和netty服务简单实例
  7. 9名程序员被抓!这次真的活该.....
  8. 新建android模拟器无法拨号 真机可以拨号,自己想弄个手机拨号器,可是在模拟器上没有反应,能帮帮忙吗?...
  9. 周年纪念闪金海报设计,这个日子不简单!
  10. win11怎么回退原系统 Windows11回退的步骤方法
  11. C#基础5:字符串操作
  12. 用手机玩转ContextCapture(Smart3D)跑出惊艳三维模型
  13. 怎样避免每次运行都启用宏的麻烦
  14. WARNING: AllowZoneDrifting is enabled.
  15. Java工程师的成长之路
  16. Windows 回声消除 怎么外放音乐不让对方听到
  17. Revo Uninstaller Pro(软件卸载工具)官方中文版V4.4.2.0 | 万能卸载软件下载 | 软件卸载工具哪个好?
  18. IPad分屏,当电脑第二显示屏
  19. python数据采集培训
  20. 浴火重生,燃起奋斗的欲望

热门文章

  1. syswow64删除文件_什么是SysWow64文件夹 SysWow64文件夹可以删除吗
  2. Docker核心技术(一):镜像与容器
  3. MySQL的用户密码过期password_expired功能
  4. [dlang](4)自定义的mysql orm工具
  5. 工业设备数字孪生白皮书
  6. Linux Namespace Veth虚拟网卡
  7. 全国大学生物联网设计竞赛作品 | 室内消毒机器人-艾盾
  8. CodeForces 643 D.Bearish Fanpages(set+multiset)
  9. unity3d 700种 材质球_活动策划:这10种气球创意玩法,让活动现场的布置更高级。...
  10. Python 获取指定日期是周几 3种方法