Замените цвет другим изображением с помощью PHP

Может ли кто-нибудь помочь мне с помощью простого скрипта заменить определенный цвет другим цветом в изображении с помощью PHP? Вот пример (цвет изменен с зеленого на желтый).

допосле

Если вы имели в виду использование библиотеки GD в PHP, вы должны дать чек на imagefilter ()

Шаги:

  • Начните с изображения .PNG, используйте белый для внутреннего, альфа для внешнего.
  • Используйте imagefilter($img, IMG_FILTER_COLORIZE, 0, 255, 0)) Где 0,255,0 – ваш цвет RGB (ярко-зеленый в этом примере)
  • Сохраните результат альфы и распечатайте.

Изменить, Рабочий код и пояснения.

Я имел в виду, используя альфу для OUTER черных линий и белый INSIDE. Вот пример изображения: WhiteInAlphaOut

И вот рабочий код для раскрашивания белых частей:

 header('Content-Type: image/png'); /* RGB of your inside color */ $rgb = array(0,0,255); /* Your file */ $file="../test.png"; /* Negative values, don't edit */ $rgb = array(255-$rgb[0],255-$rgb[1],255-$rgb[2]); $im = imagecreatefrompng($file); imagefilter($im, IMG_FILTER_NEGATE); imagefilter($im, IMG_FILTER_COLORIZE, $rgb[0], $rgb[1], $rgb[2]); imagefilter($im, IMG_FILTER_NEGATE); imagealphablending( $im, false ); imagesavealpha( $im, true ); imagepng($im); imagedestroy($im); 

Примечание . Мы должны отрицать значения, так как раскраска работает только для небелых частей. У нас могло бы возникнуть обходное решение, если бы внутри было белое изображение с черным.

Примечание . Этот код работает только для черных и белых изображений.

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

Вы можете использовать оператор switch для загрузки правильного изображения

 //get selected colour switch ($colour) { case "red": echo "<img src='RED IMAGE' "; break; case "blue": echo "<img src='blue IMAGE' "; break; case "green": echo "<img src='green IMAGE' "; break; } 

Надеюсь это поможет.

Я попробовал это:

 <?php $imgname = "1.gif"; $im = imagecreatefromgif ($imgname); $index = imagecolorexact ($im,0,128,0); imagecolorset($im,$index,240,255,0); $imgname = "result.gif"; imagegif($im,$imgname); ?> <img src="result.gif"> 

И вместо замены каждого зеленого пикселя я получил это (цвет рубашки не изменился):

рубашка не была заменена

 <?php header("Content-type: image/png"); $im = imagecreate(200, 200) imagefill($im, 0, 0, $red); // above could come from an uploaded image // find a blue in the image $newblue = imagecolorclosest($im, 0, 0, 255); // change it to green imagecolorset($im, $newblue, 0, 255, 0); imagepng($im); imagedestroy($im); ?php> 

Здесь вы найдете ближайший цвет к синему и замените его зеленым.