Проще говоря, вы не можете.Когда вы вызываете метод toDataURL для HTMLCanvasElement, он генерирует строковое представление изображения в виде URL-адреса данных.Таким образом, если вы попытаетесь сохранить изображение, браузер присвоит ему имя по умолчанию (например, Opera сохранит его как default.png, если URL-адрес данных был png-файлом).
Существует много обходных путей.Самый простой способ - выполнить AJAX-вызов на сервер, сохранить изображение на стороне сервера и вернуть URL сохраненного изображения, который затем можно будет просмотреть и сохранить на стороне клиента:
function saveDataURL(canvas) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === 4 && request.status === 200) {
window.location.href = request.responseText;
}
};
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.open("POST", "saveDataURL.php", true);
request.send("dataURL=" + canvas.toDataURL());
}
Чтобы сохранить изображение на стороне сервера, используйте следующий скрипт PHP:
$dataURL = $_POST["dataURL"];
$encodedData = explode(',', $dataURL)[1];
$decodedData = base64_decode($encodedData);
file_put_contents("images/faizan.png", $decodedData);
echo "http://example.com/images/faizan.png";