laimas,
я открыл их исходный код js и тут же закрыл :-? страшно стало) там этих "toDataURL" 11 штук :-? |
Ну это не проблема, нужно глаза закрыть и страха не будет.
Если в этих методах указан параметр (есть некая переменная), то возможно в плагине можно задавать нужный формат, читайте документацию. Если нет, указывайте сами. Что эти (для чего) 11 методов плагина возвращают, я сказать не могу, сам же метод toDataURL() возвращает изображение в формате data:image/png;base64,... (это по умолчанию), или вернет data:image/jpeg;base64,..., если указать методу jpeg формат. |
laimas,
я сделал, как вы сказали, замену в этом файле везде где есть toDataURL() на toDataURL('image/jpeg') но это не работает, он все равно на сохранение выводит png ( |
Цитата:
|
laimas, я все сделал, как вы сказали, потом пытаюсь сохранить уже обаботанную этим скриптом картинку со вставленным текстом на сайте, но в диалоговом окне расширение png у нее
|
<!DOCTYPE HTML> <html> <head> <script> function draw(f) { var cnv = document.createElement('canvas'), ctx = cnv.getContext("2d"), rdr = new FileReader(), im = new Image(), ext = format.value; rdr.onload = function() { im.onload = function() { cnv.width = this.width; cnv.height = this.height; ctx.drawImage(this, 0, 0); image.src = picture.innerHTML = cnv.toDataURL(ext) } im.src = this.result } rdr.readAsDataURL(f) } </script> </head> <body> <select id="format"> <option value="image/png">Format PNG</option> <option value="image/jpeg">Format JPEG</option> </select> <input type="file" onchange="draw(this.files[0])" /> <div><img id="image" /></div> <div id="picture"></div> </body> </html> Как видим, возвращается выбранный формат. Если взять ответ канвы (содержимое picture без data:image/jpeg;base64) и сохранить его, например используя РНР: file_put_contents('img.jpg', base64_decode(ответ_канвы)) то будет сохранено изображение именно JPEG. Это можно даже проверить так - сохранить полученный jpeg ответ канвы с расширением png и gif. Программы (тот же Проводник, отображение значков), которые определяют изображение не по расширению, а по заголовкам, будут отображать эти изображения без проблем, даже с некорректным расширением. А те что ориентируются на расширение, нет, например, попробуйте открыть их в Фотошоп. То есть с методом toDataURL(ext) все в порядке, как заказали так и работает. А вот "пытаюсь сохранить", то есть отослать готовое на сервер (?), то это нужно смотреть как это организовано плагином. Работа канвы, это не только drawImage() и toDataURL(), можно получить изображение в буфер и вытворять с ним все что угодно. А программы работающие с графикой работают или с сырыми данными (RAW) или с обработанными, но распакованными. Видеокартам JPEG, PNG и прочий зоопарк тоже не нужен, все распаковывается предварительно и затем подается на соответствующие видео страницы. В среде windows изображения, это аппаратно-независимый раст DIB (Device-Independed Bitmaps). А для хранения и передачи изображения сжимают с целю уменьшения объема данных, и на каком этапе плагин это делает, и он ли вообще в этом виновник, как это сохраняется, нужно разбираться. Мне этим заниматься некогда, да и не и охота. :) Вы используете этот плагин только лишь для того, чтобы поместить на картинку текст? |
laimas,
да, только чтобы текст разместить и все. мне всего-то нужно, чтобы по клику правой кнопки на сгенерированном изображении, оно сохранялось на комп как jpg. всё. |
Цитата:
И вообще, "да, только чтобы текст разместить и все" и при этом "потом пытаюсь сохранить уже обаботанную этим скриптом картинку со вставленным текстом на сайте", это для чего, "водяной знак" на изображение (хотя до водяного знака этому наложению как пехом до Берлина)? Если так, то зачем все это нужно? Я понимаю, если что-то визуально контролировать, как-то обрезка изображения, наложение слоев, фильтры, эффекты, согласен. Но такое и без HTML5 успешно делали, но чтобы подключать плагин на клиенте ради сделать аля-digimarc, это слишком, эту мелочь нужно поручать серверу, при загрузке изображений. И так, конечная задача аля водяной знак? |
Часовой пояс GMT +3, время: 14:00. |