弄了两天,真鄙视那个网上搜索排名前面那几个帖子,误导了好久。因为以前没接触过anychart,看了好久没明白,加了他Q问他,原来是企业级的,还要收费。
这里直接贴代码:
源代码在资源以上传。
接受服务器端:
AnyChartPNGSaver.jsp
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="java.io.ByteArrayInputStream"%>
<%@ page import="java.awt.image.BufferedImage"%>
<%@ page import="java.io.File"%>
<%@ page import="java.util.*"%>
<%@ page import="javax.imageio.ImageIO"%>
<%@ page import="sun.misc.BASE64Decoder"%>
<%
String str = request.getParameter("file");
UUID uuid = UUID.randomUUID();
String imgUUID = uuid.toString().replaceAll("-","");
//写入文件
if(request.getParameter("file") != null){
try {
BASE64Decoder decoder = new BASE64Decoder();
byte[] bytes1 = decoder.decodeBuffer(str.replace(" ","+"));//转换正规的图片空格转为+
ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
BufferedImage bi1 =ImageIO.read(bais);
File w2 = new File("d://"+imgUUID+".png");//可以是jpg,png,gif格式
ImageIO.write(bi1, "png", w2);//不管输出什么格式图片,此处不需改动
} catch (Exception e) {
e.printStackTrace();
}
}
%>
index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" language="javascript" src="./js/AnyChart.js"></script>
<script type="text/javascript" language="JavaScript">
function makeMultipartFormDataPostRequest(path, file) {
var xmlhttp = false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp=false;
}
}
if (!xmlhttp && window.createRequest) {
try {
xmlhttp = window.createRequest();
}catch (e) {
xmlhttp=false;
}
}
xmlhttp.open("POST", path, false);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//文件名字
xmlhttp.send("file="+file+"&fileName=sss");
return xmlhttp.responseText;
}
AnyChart.swfFile = "./swf/AnyChart.swf";
function saveChartAsImage(chart) {
var file;
try{
file = chart.getPNG();
}catch(e){
}
//请求服务
makeMultipartFormDataPostRequest('AnyChartPNGSaver.jsp',file);
}
</script>
</head>
<body>
<!-- report -->
<div id="report">
<div id="chart_container"></div>
<script type="text/javascript" language="javascript">
var chart = new AnyChart();
chart.setXMLFile("./data/data-1.xml");
chart.addEventListener("draw", function() {
saveChartAsImage(chart);
});
chart.write("chart_container");
</script>
</div>
</body>
</html>