Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Графика > фильтры для изображений


Автор: нуп 13.9.2012, 09:49
Есть код, который добавляет эффекты изображению(черно-белый, сепия, и много других), но отрабатывает он секунд 5-6. Как можно уменьшить время работы скрипта?
Код

function toGreyScale($input_image) {
    $image = imagecreatefromjpeg($input_image);
    $x_dimension = imagesx($image);
    $y_dimension = imagesy($image);
    $new_image = imagecreatetruecolor($x_dimension, $y_dimension);

    for ($x = 0; $x < $x_dimension; $x++) {
        for ($y = 0; $y < $y_dimension; $y++) {
            $rgb = rgb(imagecolorat($image, $x, $y));

            $b = ($rgb[0] + $rgb[1] + $rgb[2]) / 3;
            $b = 255 * (($b / 255 - .5) * 1.3 + .5);
            $b = $b < 0 ? 0 : $b > 255 ? 255 : $b;
            $color = imagecolorallocate($image, $b, $b, $b);
            imagesetpixel($new_image, $x, $y, $color);
        }

    }
    return $new_image;
}
function rgb($rgb) {
    $r = ($rgb >> 16) & 255;
    $g = ($rgb >> 8) & 255;
    $b = $rgb & 255;
    return array($r, $g, $b);
}
$i = toGreyScale('111.jpg');
header('Content-type: image/jpeg');
imagejpeg($i);

Автор: skyboy 13.9.2012, 22:28
использовать imagemagik

Автор: нуп 14.9.2012, 00:58
А поточнее можно, какие именно функции есть для собственных эффектов?

Автор: skyboy 14.9.2012, 16:14
так как сам использовал только resize, погуглил за тебя. уж не знаю, в чем была сложность.
есть http://www.imagemagick.org/script/fx.php для работы на цветовыми составляющими
есть http://www.imagemagick.org/script/command-line-options.php#convolve
есть еще куча параметров. 

Автор: нуп 14.9.2012, 16:50
Я это видел, но не понимаю как все перенести. Спс за помощь, буду разбираться 

Автор: нуп 14.9.2012, 17:07
Да уж. 2-й пример с сайта грузит проц на 75%, и висит секунд 20  smile 
Код

$ convert rose.jpg \
-fx "(1.0/(1.0+exp(10.0*(0.5-u)))-0.006693)*1.0092503" \
rose-sigmoidal.png


Автор: skyboy 14.9.2012, 18:08
Цитата(нуп @  14.9.2012,  16:07 Найти цитируемый пост)
Да уж. 2-й пример с сайта грузит проц на 75%, и висит секунд 20

мда  smile 
однако, не уверен, что PHP вариант через попиксельную обработку функциями GD справился бы быстрее  smile 
в любом случае, если у тебя происходит обработка графики, и она занимает столько времени — подумай над архитектурой. менеджер очереди там, распараллеливание.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)