Я подумал, что немного расширю сферу этого вопроса, с некоторыми полезными подробностями по этому вопросу.
Чтобы получить холст в виде изображения, вам необходимо сделать следующее:
var canvas = document.getElementById("mycanvas");
var image = canvas.toDataURL("image/png");
Вы можете использовать это для записи изображения на страницу:
document.write('<img src="'+image+'"/>');
Где "image / png" - это тип пантомимы (png - единственный, который должен поддерживаться). Если вам нужен массив поддерживаемых типов, вы можете сделать что-то вроде этого:
var imageMimes = ['image/png', 'image/bmp', 'image/gif', 'image/jpeg', 'image/tiff']; //Extend as necessary
var acceptedMimes = new Array();
for(i = 0; i < imageMimes.length; i++) {
if(canvas.toDataURL(imageMimes[i]).search(imageMimes[i])>=0) {
acceptedMimes[acceptedMimes.length] = imageMimes[i];
}
}
Вам нужно запускать это только один раз для каждой страницы - оно никогда не должно меняться в течение жизненного цикла страницы.
Если вы хотите, чтобы пользователь загружал файл после его сохранения, вы можете сделать следующее:
var canvas = document.getElementById("mycanvas");
var image = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream"); //Convert image to 'octet-stream' (Just a download, really)
window.location.href = image;
Если вы используете это с разными типами MIME, обязательно измените оба экземпляра image / png, но не image / octet-stream.
Также стоит упомянуть, что если вы используете какие-либо междоменные ресурсы для рендеринга вашего холста, вы столкнетесь с ошибкой безопасности при попытке использовать метод toDataUrl.