$img = imagecreatefromgif("put here your image path");
// Grab all color indeces for the given image.
$indeces = array();
for ($y = 0; $y < $imgHeight; ++$y) {
for ($x = 0; $x < $imgWidth; ++$x) {
$index = imagecolorat($img, $x, $y);
if (!in_array($index, $indeces)) {
$indeces[] = $index;
}
}
}
foreach ($indeces as $index) {
// Grab the color info for the index.
$colors = imagecolorsforindex($img, $index);
// Here, you would make your color transformation.
$red = $colors['red'];
$green = $colors['green'];
$blue = $colors['blue'];
$alpha = $colors['alpha'];
// Update the old color to the new one.
imagecolorset($img, $index, $red, $green, $blue, $alpha);
}
Это непроверенный код.Фактическое преобразование цвета остается на ваше усмотрение, но до тех пор, пока вы используете одно и то же преобразование для всех индексов и не смешиваетесь с альфа-каналом, полученное изображение должно сохранять градиент.
Ссылка: http://www.php.net/manual/en/ref.image.php