Доступна ли PHP реализация алгоритма stackblur?

Я пытаюсь размыть изображение и нуждаюсь в более быстром решении.

Это моя текущая попытка, которая слишком медленна для больших изображений, и я не хочу использовать imagick.

public function blur($filename, $extension, $factor = 20){ if (strtolower($extension) === "jpg" || strtolower($extension) === "jpeg") $image = imagecreatefromjpeg($filename); if (strtolower($extension) === "png") $image = imagecreatefrompng($filename); for ($x=1; $x<=$factor; $x++) imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR); imagejpeg($image, "$filename.blur.$extension"); imagedestroy($image); } 

Есть ли реализация PHP stackblur или другой быстрый алгоритм?

    Простым решением является масштабирование изображения до применения фильтра размытия. Вот некоторые примеры:

    Исходное изображение:

    Фотография кота (общественное достояние: Longhair_Tabby_JaJa.jpg из Викисклада)

    20 × Размытие по Гауссу (2.160 секунд):

     { $start = microtime(true); for ($x=0; $x<20; $x++) { imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR); } $end = microtime(true); $howlong = $end - $start; } 

    Результат применения Gaussian blur filter 20 раз

    Сочетание масштабирования и размытости Гаусса (0.237 секунд):

     { $start = microtime(true); /* Scale by 25% and apply Gaussian blur */ $s_img1 = imagecreatetruecolor(160,120); imagecopyresampled($s_img1, $image, 0, 0, 0, 0, 160, 120, 640, 480); imagefilter($s_img1, IMG_FILTER_GAUSSIAN_BLUR); /* Scale result by 200% and blur again */ $s_img2 = imagecreatetruecolor(320,240); imagecopyresampled($s_img2, $s_img1, 0, 0, 0, 0, 320, 240, 160, 120); imagedestroy($s_img1); imagefilter($s_img2, IMG_FILTER_GAUSSIAN_BLUR); /* Scale result back to original size and blur one more time */ imagecopyresampled($image, $s_img2, 0, 0, 0, 0, 640, 480, 320, 240); imagedestroy($s_img2); imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR); $end = microtime(true); $howlong = $end - $start; } 

    Результат применения комбинации масштабирования изображения и гауссовского размытия