Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 01.09.2015, 08:16
MRJ MRJ вне форума
Интересующийся
Отправить личное сообщение для MRJ Посмотреть профиль Найти все сообщения от MRJ
 
Регистрация: 03.03.2014
Сообщений: 25

laimas,

я открыл их исходный код js и тут же закрыл страшно стало)
там этих "toDataURL" 11 штук
Ответить с цитированием
  #12 (permalink)  
Старый 01.09.2015, 08:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ну это не проблема, нужно глаза закрыть и страха не будет.

Если в этих методах указан параметр (есть некая переменная), то возможно в плагине можно задавать нужный формат, читайте документацию. Если нет, указывайте сами. Что эти (для чего) 11 методов плагина возвращают, я сказать не могу, сам же метод toDataURL() возвращает изображение в формате data:image/png;base64,... (это по умолчанию), или вернет data:image/jpeg;base64,..., если указать методу jpeg формат.
Ответить с цитированием
  #13 (permalink)  
Старый 01.09.2015, 21:16
MRJ MRJ вне форума
Интересующийся
Отправить личное сообщение для MRJ Посмотреть профиль Найти все сообщения от MRJ
 
Регистрация: 03.03.2014
Сообщений: 25

laimas,

я сделал, как вы сказали, замену в этом файле везде где есть

toDataURL()

на

toDataURL('image/jpeg')

но это не работает, он все равно на сохранение выводит png (
Ответить с цитированием
  #14 (permalink)  
Старый 01.09.2015, 22:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от MRJ
он все равно на сохранение выводит png
Сохранение и вывод, это разные понятия. О чем речь?
Ответить с цитированием
  #15 (permalink)  
Старый 01.09.2015, 23:46
MRJ MRJ вне форума
Интересующийся
Отправить личное сообщение для MRJ Посмотреть профиль Найти все сообщения от MRJ
 
Регистрация: 03.03.2014
Сообщений: 25

laimas, я все сделал, как вы сказали, потом пытаюсь сохранить уже обаботанную этим скриптом картинку со вставленным текстом на сайте, но в диалоговом окне расширение png у нее
Ответить с цитированием
  #16 (permalink)  
Старый 02.09.2015, 03:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

<!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, 02.09.2015 в 03:25.
Ответить с цитированием
  #17 (permalink)  
Старый 02.09.2015, 06:03
MRJ MRJ вне форума
Интересующийся
Отправить личное сообщение для MRJ Посмотреть профиль Найти все сообщения от MRJ
 
Регистрация: 03.03.2014
Сообщений: 25

laimas,

да, только чтобы текст разместить и все. мне всего-то нужно, чтобы по клику правой кнопки на сгенерированном изображении, оно сохранялось на комп как jpg. всё.
Ответить с цитированием
  #18 (permalink)  
Старый 02.09.2015, 06:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от MRJ
чтобы по клику правой кнопки на сгенерированном изображении, оно сохранялось на комп как jpg
Вы код выше пробовали? Если сохранять изображение из примера на диск выбором из контекстного меню, то браузер предложит формат сохранения тот, что и был заказан у канвы. Что там у вас происходит, темный лес.

И вообще, "да, только чтобы текст разместить и все" и при этом "потом пытаюсь сохранить уже обаботанную этим скриптом картинку со вставленным текстом на сайте", это для чего, "водяной знак" на изображение (хотя до водяного знака этому наложению как пехом до Берлина)?

Если так, то зачем все это нужно? Я понимаю, если что-то визуально контролировать, как-то обрезка изображения, наложение слоев, фильтры, эффекты, согласен. Но такое и без HTML5 успешно делали, но чтобы подключать плагин на клиенте ради сделать аля-digimarc, это слишком, эту мелочь нужно поручать серверу, при загрузке изображений.

И так, конечная задача аля водяной знак?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема со scroll Chrome Элементы интерфейса 2 21.10.2013 14:46
прогкрутка к якорям cOAPerator Общие вопросы Javascript 20 27.08.2013 03:30
нужно заставить одновременно работать слайдер и модальное окно обратной связи kvant355 Javascript под браузер 3 22.07.2013 16:34
Выравнять три дива в одной строке debugx (X)HTML/CSS 9 06.10.2011 12:03