Как на вход функции передать canvas

251
03 марта 2017, 01:15

Есть функция:

var h = Hermite.init('hermite-worker.js');
h.resize({
    source: document.getElementById('image'), // any canvas or image elements, jQuery or native
    width: 400,
    height: 600,
    output: 'image', // [optional] `image` or `canvas`. If not entered output is same as input element.
    quality: 0.7, // [optional] applicable for `image` output only
}, function(output) {
    //your callback
});

Пытаюсь на вход подать значение ранее созданного canvas следующим образом:

canvas.getContext('2d').drawImage(img, X, Y, W, H, 0, 0, canvas.width, canvas.height);
canvas.toDataURL("image/jpeg", 1.0);
h.resize({
    source: canvas,
    width: 400,
    height: 600,
    output: 'image', 
    quality: 0.7, 
}, function(output) {
    //your callback
});

... и получаю ошибку Uncaught TypeError: h.resize is not a function Очевидно, что функция срабатывает раньше, чем запишется canvas. Если же на вход подавать не canvas, а изображение через конструкцию

var image = new Image();
image.onload = function(){
  h.resize({
    source: image,      
    ...

то функция отрабатывает корректно. Перепробовал многое, в том числе решения вида

$.when( 
  canvas.toDataURL("image/jpeg", 1.0)
).then(function(){
  h.resize({      
    source: canvas, 

...но все тот же результат в виде ошибки.

Прошу помощи и совета, что изменить в коде, чтобы функция дожидалась создания canvas, а затем получала его значение в качестве входных данных?

Answer 1

Прошу помощи и совета, что изменить в коде, чтобы функция дожидалась создания canvas, а затем получала его значение в качестве входных данных?

вот таким способом, функция вызовется после создания всех canvas

  $(window).load(function() {
canvas.getContext('2d').drawImage(img, X, Y, W, H, 0, 0, canvas.width, canvas.height);
canvas.toDataURL("image/jpeg", 1.0);
        h.resize({
           source: canvas,
           width: 400,
           height: 600,
           output: 'image', 
           quality: 0.7, 
        }, function(output) {
           //your callback
        });
     });

Все что связано с обработкой canvas и получением информации с формы перенесите в

$(window).load(function() { ... }

READ ALSO
Вписывание изображений в блок

Вписывание изображений в блок

Подскажите как можно сделать вписывание изображений в зависимости от их количества в блок ?

314
Кривой скроллинг к элементу

Кривой скроллинг к элементу

Доброго времени суток

161
Зависимость модулей

Зависимость модулей

Есть три куска кода:

239
Почему не получается запустить hot module replacement (React,Webpack)?

Почему не получается запустить hot module replacement (React,Webpack)?

Не получается запустить hmrПерехожу по ссылке http://localhost:3000/webpack-dev-server/bundle

271