Echarts圖形是由Javascript親自在前端網頁上繪制的
1.用ECharts配置項手冊中的toolbox.feature.saveAsImage
toolbox: { show: true, feature: { saveAsImage: { show:true, excludeComponents :['toolbox'], pixelRatio: 2 } } } //寫在option中,這樣會在圖形右上角產生一個保存為圖片的標識,點擊即可下載圖片,這種方法試用於網站點擊保存的需求
2.用ECharts實例方法getImage(這種方法得到的picInfo為[object HTMLImageElement],無法通過Ajax傳遞到后台處理,只能用於顯示)
這個功能在ECharts3中好像已經舍棄,作者用ECharts3沒有出現任何效果,換成ECharts2的js文件才可以運行
myChart.setOption(option); var picInfo = myChart.getImage(); //用來展示是否成功 onload=function f(){ document.getElementById("pic").appendChild(picInfo); //document.getElementById("pic").innerHTML = picInfo; }
3.用ECharts實例方法getDataURL(實現圖片自動保存)
myChart.setOption(option); var picInfo = myChart.getDataURL(); //getDataURL仍然要放在setOption方法生成一個簡單的圖形之后,現在我們得到的picInfo是一串base64信息,我們可以將picInfo用Ajax傳遞到后台處理
4.后台保存圖片
方法1.參考:https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.image.save?view=netframework-4.7.2#System_Drawing_Image_Save_System_String_(需要版本要求較高)
方法2:
/// <summary> /// 無損保存圖片 /// </summary> /// <param name="imgResult">圖片</param> /// <param name="Path">保存的路徑</param> /// <param name="ImageType">圖片的類型,image/jpeg,image/png,image/gif,image/tiff,image/bmp</param> /// <returns></returns> public bool SaveImage(Image imgResult, string Path, string ImageType) { EncoderParameter p; EncoderParameters ps; try { ps = new EncoderParameters(1); p = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); ps.Param[0] = p; ImageCodecInfo ii = GetCodecInfo(ImageType); imgResult.Save(Path, ii, ps); imgResult.Dispose(); } catch (Exception ex) { return false; } return true; } /// <summary> /// 獲取圖片的編碼類型 /// </summary> /// <param name="mimeType"></param> /// <returns></returns> public ImageCodecInfo GetCodecInfo(string mimeType) { ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders(); foreach (ImageCodecInfo ici in CodecInfo) { if (ici.MimeType == mimeType) return ici; } return null; }
參考:https://www.jianshu.com/p/f5359864fa4f
