#javascript #html #canvas
#javascript #HTML #canvas
Вопрос:
Я работаю с canvas, и я мог бы сохранить свой Canvas в формате png.
Осмотревшись, я обнаружил отличную функцию toDataURL(), предоставляемую W3C.
Я также уже использую canvas2image из nihilogic, который мы можем найти на этой странице :http://www.nihilogic.dk/labs/canvas2image
Я заметил, что в canvas2image разработчики используют «image / octet-stream», которые открывают диалоговое окно «открыть с помощью», но создают некоторую проблему :
-имя изображения — это ascii, возвращаемое toDataURL().
-при загрузке расширение файла равно .part
Короче говоря, я бы предлагал в диалоговом окне «открыть с помощью» что-то вроде «myImage.png» при нажатии на кнопку.
Возможно ли это? Буду признателен за любую помощь.
Редактировать: у меня есть ограничение использовать только Javascript, я не могу использовать какой-нибудь хороший PHP-трюк
Ответ №1:
если вы нацелены только на современные браузеры и не слишком заботитесь о кроссбраузерности, есть возможное решение с атрибутом элемента «загрузить». Вот один пример для вашей информации:
<a target="_blank" href="https://www.google.com/intl/en_com/images/srpr/logo3w.png" download="testXXX.jpg">DOWNLOAD ME!</a>
Только одна строка, без javascript, да! Вы можете изменить часть href на URL-адрес данных, и это тоже работает.
Ознакомьтесь с этим руководством Эрика по html5rocks для получения более подробной информации.
Ответ №2:
К сожалению, нет. В настоящее время data
URI (используемые этим модулем canvas2image; на самом деле довольно аккуратно) не поддерживают указание имени файла или заголовков содержимого, поэтому единственный способ заставить браузер сгенерировать диалоговое окно сохранить как — это установить тип содержимого в octet-stream.
Комментарии:
1. Итак, также нет способа настроить имя URI при использовании чего-то подобного? : окно. местоположение = холст. toDataURL(‘изображение /png’);
2. Проблема в том, что если вы измените тип содержимого на тип содержимого изображения (например, image / png ), браузер отобразит его вместо запроса на сохранение. Обычно (при использовании серверного решения) вы можете задать заголовок Content-Disposition для принудительной загрузки и имени файла, но
data
URI этого не поддерживает (см. en.wikipedia.org/wiki/Talk:Data:_URI_scheme#Disadvantages для получения дополнительной информации).3. Примечание: В HTML5 теперь можно загружать изображения с пользовательскими именами, используя
download
атрибут.
Ответ №3:
Что ж, в реальных веб-приложениях решение Хангруи Гао далеко от приемлемого, согласно
http://caniuse.com/#feat=download
вы запретите эту функцию всем пользователям IE, Safari, IOS Safari, Android.
Я думаю, что, учитывая это ограничение в Canvas2Image, лучшим решением будет использовать некоторую логику на стороне сервера, как описано здесь
Linuxatico