Раскрашивать и менять цвета с помощью библиотеки изображений PHP GD? - PullRequest
4 голосов
/ 04 апреля 2009

Здравствуйте. Я пытаюсь раскрасить и поменять цвета на изображении, используя библиотеку изображений GD с PHP.

Я использую оригинальное изображение, расположенное здесь: http://korlon.com/youknowbetter/test.jpg

И хочу довести его до точки, где это оранжевое лицо с черной одеждой и волосами, как вы видите здесь: http://youknowdifferent.org/

До сих пор я использовал следующий код:

<?php
header('Content-type: image/jpeg');
$im = imagecreatefromjpeg('test.jpg');



imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_CONTRAST, 255);
imagefilter($im, IMG_FILTER_NEGATE);
imagefilter($im, IMG_FILTER_COLORIZE, 252, 137, 36);


imagejpeg($im);
?>

Чтобы приблизиться, но мне все еще не хватает возможности превратить все белые оттенки в черные. http://korlon.com/youknowbetter/filter.php

Я пытался поменять местами белое на черное, как указано в этом вопросе здесь: Можно ли поменять цвета на изображении с помощью библиотеки GD в PHP?

Однако это не похоже на работу. Это на самом деле не поменять цвета. Это потому, что я использую JPG, а не GIF? Что мне нужно сделать с цветовой палитрой?

Спасибо, любая помощь будет принята с благодарностью!

STOOB

1 Ответ

5 голосов
/ 05 апреля 2009

используйте синий (# 0276DB) вместо оранжевого, а затем инвертируйте изображение (используя IMAGE_FILTER_NEGATE), чтобы получить оранжевый и черный.

Итак, ваш код будет:

<?php
header('Content-type: image/jpeg');
$im = imagecreatefromjpeg('test.jpg');



imagefilter($im, IMG_FILTER_GRAYSCALE);
imagefilter($im, IMG_FILTER_CONTRAST, 255);
imagefilter($im, IMG_FILTER_NEGATE);
imagefilter($im, IMG_FILTER_COLORIZE, 2, 118, 219);
imagefilter($im, IMG_FILTER_NEGATE);

imagejpeg($im);
?>
...