Подтвердить что ты не робот

Сохранить холст как jpg на рабочий стол

Я пытаюсь сохранить изображение (JPEG) на рабочий стол из HTML5canvas. Я могу открыть в новом окне window.open(canvas.toDataURL('png'), "");, но как я могу сохранить его на рабочем столе? Спасибо.

4b9b3361

Ответ 1

Загрузить атрибут

В HTML5 есть новый атрибут загрузки, который позволяет указать имя файла для ссылок.

Я сделал это для сохранения холста. У него есть ссылка ( "Загрузить как изображение" ) -

<a id="downloadLnk" download="YourFileName.jpg">Download as image</a>

И функция:

function download() {
    var dt = canvas.toDataURL('image/jpeg');
    this.href = dt;
};
downloadLnk.addEventListener('click', download, false);

Вы даже можете изменить имя файла динамически, установив атрибут downloadLnk.download = 'myFilename.jpg'.

Демо из архивов.

Ответ 2

Проверьте это, если это поможет, jsfiddle реализован для того же требования.  http://jsfiddle.net/5whKM/

<img src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7"/>

<script>
  var img = document.images[0];
  img.onclick = function() {
    var url = img.src.replace(/^data:image\/[^;]/, 'data:application/octet-stream');
    location.href = url;
  };
</script>

Ответ 3

Что вы должны сделать в этом случае, это отправить пользователю window.location=canvas.toDataURL('png') в местоположение файла, который вы хотите загрузить. Итак, ваше решение об открытии новых окон - это то, что вы должны делать, и что такое "загрузка".

Например, если вы хотите, чтобы они сохраняли EXE для файла, вы просто позволяете им нажимать на привязку, а браузер обрабатывает запрос файла и его загрузку. Вы также можете сделать это с помощью JavaScript, но это проблема безопасности и пользовательского опыта, чтобы просто открыть SaveAs для пользователей.

Также проверьте это: Загрузка браузера/HTML-силы изображения из src=" data: image/jpeg; base64... "