Convert canvas to an image with JavaScript [duplicate] Convert canvas to an image with JavaScript [duplicate] jquery jquery

Convert canvas to an image with JavaScript [duplicate]


You have the right idea, and it will work in very simple cases such as:

var can = document.getElementById('canvas1');var ctx = can.getContext('2d');ctx.fillRect(50,50,50,50);var img = new Image();img.src = can.toDataURL();document.body.appendChild(img);

http://jsfiddle.net/simonsarris/vgmFN/

But it becomes problematic if you have "dirtied" your canvas. This is done by drawing images to the canvas that are from a different origin. For instance, if your canvas is hosted at www.example.com, and you use images from www.wikipedia.org, then your canvas' origin-clean flag is set to false internally.

Once the origin-clean flag is set to false, you are no longer allowed to call toDataURL or getImageData


Technically, images are of the same origin if domains, protocols, and ports match.


If you are working locally (file://) then any image drawn will set off the flag. This makes debugging annoying, but with Chrome you can start it with the flag --allow-file-access-from-files to allow this.


This worked for me

//after creating your plot dovar imgData = $('#chart1').jqplotToImageStr({}); // given the div id of your plot, get the img datavar imgElem = $('<img/>').attr('src',imgData); // create an img and add the data to it$('#imgChart1').append(imgElem);​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ //