если пользоваться только js, то можно подключить плагин
JavaScript-Canvas-to-Blob и сохранить канвас в png файл
<script src="js/canvas-to-blob.min.js"></script>
js:
canvas.toBlob(function(blob) {
saveAs(blob, "image.png");
}, "image/png");
но вроде как раньше это не работало в Safari, хотя у них в описании написано что Safari +6.0, не знаю как сейчас у них обстоит дело с сафари, лучше сохранить png файл, отправив POST запросом base64 строку на php обработчик
$base64string = $_POST['base64string'];
$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $base64string));
file_put_contents('image.png', $data);