EChart 后台生成圖片思路


https://www.echartsjs.com/zh/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20ECharts
echart 學習頁面


參考思路, 因為 Echart不支持直接生成圖片:
1. 寫一個generateChart.html頁面 接受參數 sf=sd&date=20200208 , 根據省份(sf) 日期(date) 生成對應的折線圖
2. 在generateChart.html 頁面中ajax 調用后台接口 saveImage.ashx 生成某省圖片png

var myChart = ec.init(document.getElementById('myChart'));
var data = "ImageData=" + encodeURI(myChart.getDataURL())+ "sf=sd&date=20200208"; //這里應該動態
$.ajax({
type: "post",
url: "/ajax/saveImageHandler.ashx",
data: "action=saveImage&" + data,
cache: false,
success: function (msg) {
}
});
});

3. 獲取 ImageData 的base64生成圖片
***參考地址:
c#
https://www.cnblogs.com/wdkshy/p/4206018.html
java
https://blog.csdn.net/tjj3027/article/details/80421170

public class saveImageHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//生成圖片
SaveImage()
context.Response.Clear();
context.Response.ContentType = "text/plain";
//輸出 json 字符串
context.Response.Write("{isSucess:true}");
context.Response.End();
}
}

public bool IsReusable
{
get
{
return false;
}
}

protected void SaveImage()
{
int returnid = 0;
string ImageData = Request.Form["ImageData"];
ImageData=Server.UrlDecode(ImageData);
ImageData = ImageData.Replace(" ", "+");

//string sf= Request.Form["sf"]; //省份等。。。。。
try {
string[] url = ImageData.Split(',');
string u = url[1];
// Base64解碼
byte[] b = Convert.FromBase64String(u);
string name = "E:\\sd20200209.png";
FileHelper.ByteStreamToFile(name, b);
} catch (Exception e) {
}}

}

 

//二進制數組Byte[]生成文件
public static bool ByteStreamToFile(string createFileFullPath, byte[] streamByte)
{
if (!File.Exists(createFileFullPath))
{
FileStream fileStream = File.Create(createFileFullPath);
fileStream.Write(streamByte, 0, streamByte.Length);
fileStream.Close();
return true;
}
return false;
}

}
4. 在 Global.asax.cs 文件中添加一個 Timer 對象定時調用全國31個省份,日期分別生成
generateChart.html?sf=sd&date=20200208
generateChart.html?sf=sh&date=20200208
* 模擬post請求頁面實例 generateChart.html?sf=XX&date=XXXXXXX
https://www.jb51.net/article/86067.htm

private string HttpPost(string Url, string postDataStr)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
request.CookieContainer = cookie;
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

response.Cookies = cookie.GetCookies(response.ResponseUri);
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();

return retString;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM