Пример библиотеки Pixastic, с которой вы связаны, должен фактически работать с элементом canvas в качестве первого аргумента, а не с изображением.
По умолчанию библиотека pixastic пытается заменить узел, который вы передаете, на элемент canvas, который он создает. Чтобы этого не происходило, вы можете включить опцию, чтобы указать, чтобы покинуть узел DOM, и включить обратный вызов для обработки возвращаемых данных самостоятельно. Примерно так:
Pixastic.process(canvas, "blur", { leaveDOM: true }, function(img) {
canvas.getContext('2d').drawImage(img, 0, 0);
});
В качестве альтернативы, если вы не хотите зависеть от библиотеки, вы можете реализовать размытие самостоятельно, используя getImageData (), манипулируя возвращенными данными пикселей и используя putImageData (), чтобы нарисовать размытое изображение обратно на холст. *
Еще одна вещь, на которую следует обратить внимание, это то, что отдельные пиксели работают медленно и могут не работать на больших изображениях. Если это проблема, вы можете попробовать уменьшить изображение и уменьшить его, чтобы получить эффект быстрого размытия. Примерно так:
ctx.drawImage(canvas, 0, 0, canvas.width / 2, canvas.height / 2);
ctx.drawImage(canvas, 0, 0, canvas.width / 2, canvas.height / 2, 0, 0, canvas.width, canvas.height);