So you’ve finally discovered the wonder that is the HTML5 Canvas element. Great! If you’re like me, the first thing I wanted to do with it was doodle on it. I eventually worked out how to map touch/mouse events to the canvas and draw lines, but I wanted to save my creations!
As it turns out, the Canvas element has a method called toDataURL(), which base64 encodes the entire Canvas element and returns it as a string. From there, you can just pump it over to a server and handle it from there. Here’s the step-by-step, which assumes you are also running jQuery on your site.
Step 1: Save the canvas and POST the data
var data = document.getElementById("myCanvasID").toDataURL(); $.post("process.php", { imageData : data }, function(data) { window.location = data; }); |
Step 2: Process the POST data, and save it to a file.
$data = substr($_POST['imageData'], strpos($_POST['imageData'], ",") + 1); $decodedData = base64_decode($data); $fp = fopen("canvas.png", 'wb'); fwrite($fp, $decodedData); fclose(); echo "/canvas.png"; |
Note: The first line of this script removes the header information that is sent with the encoded data.
Thats all there is to it. You can now easily save your HTML 5 awesomeness.