We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy.
Unfortunately, activation email could not send to your email. Please try again.

How to render chart image run-time and save it to a file?

Thread ID:

Created:

Updated:

Platform:

Replies:

128915 Feb 15,2017 09:48 AM Mar 2,2017 08:49 AM ASP.NET Core 5
loading
Tags: Chart
Stanislaw Tristan
Asked On February 15, 2017 09:48 AM

Hello!
I need to save the rendered chart image to a PNG file without displaying it to UI.
How this is possible?

Dharanidharan Dharmasivam [Syncfusion]
Replied On February 17, 2017 07:52 AM

Hi Stanislaw, 

Thanks for using Syncfusion product. 

We have analyzed your query and prepared a sample with respect to your requirement. In a button click, we have exported chart as image. In this, we can specify the export settings properties and called the export method. In the server side, we have exported to specified folder. In the highlighted path, you can specify your required path, in which the chart has to be saved as image. Find the code snippet below. 

ASP.NET Core: 

View: 
<input type="button" value="PNG" onclick="chartPng()" /> 
 
function chartPng(sender) { 
        var chart = $("#container").ejChart("instance"), 
            exporting = chart.model.exportSettings; 
        exporting.fileName = "chart"; 
        exporting.angle = 0; 
        exporting.action = "Home/ExportChart"; 
        type = "png"; 
        exporting.mode = "server"; 
        chart.export(); 
    } 
 
Controller: 
 
static string path = "E:\\"; 
 
public void ExportChart(string Data, string ChartModel) 
       { 
            ChartProperties obj = ConvertChartObject(ChartModel); 
            string type = obj.ExportSettings.Type.ToString().ToLower(); 
            string fileName = obj.ExportSettings.FileName; 
            string orientation = obj.ExportSettings.Orientation.ToString(); 
 
            Data = Data.Remove(0, Data.IndexOf(',') + 1); 
            MemoryStream stream = new MemoryStream(Convert.FromBase64String(Data)); 
 
            using (FileStream fs = new FileStream(path + "CoreChart.png", FileMode.Create)) 
            { 
                using (BinaryWriter bw = new BinaryWriter(fs)) 
                { 
                    byte[] data = Convert.FromBase64String(Data); 
                    bw.Write(data); 
                    bw.Dispose(); 
                } 
            } 
        } 

We have attached the sample for your reference in the below location. 

Thanks, 
Dharani. 


Stanislaw Tristan
Replied On February 17, 2017 08:20 AM

Hello, Dharani!
Thank you for the solution and sample!

Anandaraj T [Syncfusion]
Replied On February 20, 2017 07:02 AM

Hi Stanislaw, 

Most welcome. 

Please let us know if you have any other queries regarding this. We are glad to assist you. 

Regards, 
Anand 


Stanislaw Tristan
Replied On February 28, 2017 07:24 AM

Hello!
Your sample contains with both server and client code. But I need to export chart completely from server-side.
Your method ExportChart accepts a parameter Data, that comes from client. How to make this sample without touching the client (i.e. get the Data from server-side).
Thank you!

Dharanidharan Dharmasivam [Syncfusion]
Replied On March 2, 2017 08:49 AM

Hi Stanislaw, 

Sorry for the inconvenience. 

As of now we don’t have support for exporting chart completely in server side. To export the chart we need to call the public method (named export). In this method we will fetch the rendered chart element from the DOM and we will convert the canvas element into DataURL and will send this data to the server side. Since these process have to be carried out in client side only, exporting chart completely in server side is not possible. 

Dharani. 


CONFIRMATION

This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.

;