一、第一种方法
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();
}
}