Черно-белое изображение средствами php

Для выполнения данной задачи нашел в сети интересную реализацию, которая мне очень понравилась. Следующий код сделает из любого изображения черно-белое:

$img_src = "ваша картинка.png";
$original = imagecreatefrompng($img_src); // если картинка не png меняем на нужную функцию

$im = imagecreate(imagesx($original), imagesy($original)); 

for ($i = 0; $i <= 255; $i++) {
    $palette[$i] = imagecolorallocate($im, $i, $i, $i);
} 

for($x = 0; $x < imagesx($original); $x++) {
    for($y = 0; $y < imagesy($original); $y++) {
        $rgb = imagecolorat($original, $x, $y);
        $r = ($rgb >> 16) & 0xFF;
        $g = ($rgb >> 8 ) & 0xFF;
        $b = $rgb & 0xFF;
        imagesetpixel($im, $x, $y, $palette[grayscale($r, $g, $b)]);
    }
} 

imagepng($im, 'result.png');

function grayscale($r, $g, $b) {
    return 0.199*$r + 0.587*$g + 0.114*$b;
}


спасибо автору

This entry was posted in Php. Bookmark the permalink.

Добавить комментарий

Ваш адрес email не будет опубликован.

*