[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывод/сохранение png
Kusss
Есть 2 холста.
canvas и canvas2
Рисуют в первом (миниатюра), а второй заполняю после нажатия кнопки (реальный размер).
canvas2.loadFromJSON(JSON.stringify(canvas), canvas2.renderAll.bind(canvas2), function(o, object) {
// тут масштабируем
fabric.log(o, object);
});

и после этой операции делаю
window.open(canvas2.toDataURL('png'));

и получаю пустой лист. :(
Kusss
забыл написать.
изображение на втором холсте появляется.
Kusss
UP.
я уже не знаю как решить данную задачу.

https://jsfiddle.net/o9rh58vz/6/

Нужно при клике на копирование - сразу сохранить большой холст.
kaww
Цитата (Kusss @ 19.01.2016 - 06:09)
я уже не знаю как решить данную задачу.

Очевидно, что перед printPng должен быть вызван savePNG. https://jsfiddle.net/o9rh58vz/7/
Kusss
Есть проблемка.... это работает когда мало объектов, и большой холст успевает сформироваться.
Если там что-то большое, результат пустота.

Похоже что loadFromJSON работает асинхронно, как выяснить что формирование завершено ?
kaww
Kusss, гугл говорит, что вторым параметром в loadFromJSON можно передать callback-функцию
Kusss
решил проблему с помощью отложенной загрузки функции

// Сохранить в PNG
function savePNG() {
var timer;
// информация с малого холста
var json = JSON.stringify(canvas);
original.loadFromJSON(json, original.renderAll.bind(original), function(o, object) {

// тут выполняем нужные преобразования

clearTimeout(timer);
timer = setTimeout(function(){
saveFile();
}, 500);
});
}


function saveFile(){
var data = original.toDataURL('image/png').replace(/data:image\/png;base64,/, '');
$.post('/upload/',{'save':data}, function(save){
window.open(save);
//window.location.href=save;
});
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.