ImageMagick обесцвечивать черный / белый? - PullRequest
2 голосов
/ 07 февраля 2011

Хотел бы превратить это в черно-белое .. не могу понять, что использовать от imagick ..

$handle_data = file_get_contents('http://www.bungie.net/Stats/Reach/Nightmap.ashx');
//http://www.bungie.net/Stats/Halo3/Nightmap.ashx
$img = new Imagick();
$img->readImageBlob($handle_data);
$img->writeImage('nightmap/'.$time.'.gif');

Ответы [ 2 ]

3 голосов
/ 07 февраля 2011

Использование Imagick :: modulateImage может быть быстрым и грязным решением. Грязные, потому что теория цвета - довольно сложная область, и для создания изображений в градациях серого можно сделать больше, чем просто обесцветить изображение (например, применить различные веса к одноцветным каналам).

bool Imagick::modulateImage (float $brightness , float $saturation , float $hue)

Для данного изображения удерживайте brightness и hue на уровне 100%, а для saturation установите значение 0%. Внизу страницы документации приведен пример, который делает именно это.

1 голос
/ 03 декабря 2015

Существует гораздо лучшее (и столь же простое) решение: $im = $im->fxImage('intensity');

, которое применяет функцию к изображению, где интенсивность равна 0.299*red+0.587*green+0.114*blue.

. Эта формулаоснованный на том, как наши глаза более чувствительны к разным цветам, и, как таковая, разница между этим и «плоским» изображением в градациях серого - это день и ночь.

Подробнее здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...