Предварительно визуализируйте различные уровни размытия, сохраняйте их и просматривайте их как кадры.Возможно, что все, что stackBlurImage
делает, просто не может быть сделано достаточно быстро, чтобы выглядеть как анимация.
Редактировать: Я забираю это обратно, именно то, что вы сделали: http://jsfiddle.net/nwellcome/27QUM/, который мне нравится в Chrome, какой браузер вы используете?
Редактировать 2: Попробуйте второй подход в этой скрипке: http://jsfiddle.net/nwellcome/27QUM/4/, вместо уменьшения размытияРадиус на 1 каждый раз, установите fps на что-то, что setInterval
может обрабатывать и манипулировать величиной уменьшения радиуса размытия в каждом кадре.
var fps = 30;
var blur = 100;
var blurTime = 0.5; // seconds
var interval = 1000 / fps;
var step = blur/ (fps * blurTime);
var anim = setInterval(function(){
blur-= step;
if (blur < 0) {
clearInterval(anim);
}
stackBlurImage(image, canvas, blur);
}, interval);
Редактировать 3: просто для удовольствияиз этого, с помощью файлового API HTML5, вы можете загрузить свое собственное изображение для размытия: http://jsfiddle.net/nwellcome/27QUM/12/