Сохранить рисунок из canvas в .jpg
var image = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
window.location.href=image; Этот код сохраняет рисунок из canvas в формате jpg но имеет тип easytoshop, приходится переименовывать. Что то не получается присвоить файлу расширение при сохранении. |
Используйте атрибут download, чтобы указать имя сохраняемого файла
var dataURL = canvas.toDataURL("image/jpeg"); var link = document.createElement("a"); link.href = dataURL; link.download = "my-image-name.jpg"; link.click(); |
Пришёл к выводу, что это сделать не возможно. Если имеем имя с расширением, то просто откроется в браузере. Так что серию картинок из canvas можно сохранить только типа easytoshop на компьютер. А потом по одной переименовывать с любым расширением. Хорошо получается с jpg, но сам файл в базе64 всё равно png.
|
Попробуйте. На ваш компьютер загрузится 10 картинок, килобайт по 10. Проверял в браузерах на базе хром.
<html> <head> </head> <body id='экран' style=' width:100%; height:100%;' onload='var и=document.all; и.v.style.top=((и.экран.clientHeight/2)-200)+"px"; и.v.style.left=((и.экран.clientWidth/2)-200)+"px"; var a=0; setInterval(function() { a+=0.01; if (a>0.1){return false;} и.v.width= и.v.width; ctx=и.v.getContext("2d"); ctx.translate(200, 200); ctx.rotate(a); ctx.fillStyle = "rgb(255,0,0)"; ctx.fillRect(-50, -50, 100, 100); ctx.rotate(-a*3); ctx.fillStyle = "rgb(0,255,0)"; ctx.fillRect(-25, -25, 50, 50); ctx.translate(100, 100); ctx.rotate(a*4); ctx.fillStyle = "rgb(0,0,255)"; ctx.fillRect(-10, -10, 40, 40); var image = и.v.toDataURL("image/png").replace("image/png", "image/octet-stream"); window.location.href=image; }, 200);'> <canvas id="v" width='400px' height='400px' style=' position:absolute;' ></canvas> </body> </html> Нет это работает только локально отсюда загрузки у меня не пошли |
Один первый при первом открытии сохраняется. Так что можно продолжить эксперименты.
|
Вложений: 1
Вот пример на основе кода, который я приводил выше...
<canvas id="canvas" width="150" height="150"></canvas> <script> var ctx = canvas.getContext("2d"); ctx.font = "120px Arial"; ctx.fillText("\uD83D\uDDFA", 15, 115); canvas.onclick = function() { var dataURL = canvas.toDataURL("image/jpeg"); var link = document.createElement("a"); document.body.appendChild(link); // Firefox requires the link to be in the body :( link.href = dataURL; link.download = "my-image-name.jpg"; link.click(); document.body.removeChild(link); }; </script> Вот открывается или что вы имеете в виду? |
Да именно это и имел, Большое Спасибо! Просто зациклился на получении серии картинок и были ошибки.
|
Часовой пояс GMT +3, время: 05:54. |