function hslToRgbString($hsl_object)
{
    $rgb = hslToRgb($hsl_object[0], $hsl_object[1], $hsl_object[2]);
    return "rgb({$rgb[0]},{$rgb[1]},{$rgb[2]})";
}
示例#2
0
    $b = ($b + $m) * 255;
    return array(floor($r), floor($g), floor($b));
}
$hueAdjustment = -180;
$tar = array('red' => 47, 'green' => 116, 'blue' => 118);
$img = imagecreatefrompng('core/imageColor/img.png');
$x = imagesx($img);
$y = imagesy($img);
$yMin = $y / 3;
$yMax = $y * 2 / 3;
$xMin = $x / 3;
$xMax = $x * 2 / 3;
$red = imagecolorallocate($img, 255, 0, 0);
for ($i = $xMin; $i < $xMax; ++$i) {
    for ($j = $yMin; $j < $yMax; ++$j) {
        $ind = imagecolorat($img, $i, $j);
        $val = imagecolorsforindex($img, $ind);
        if (getDist($tar, $val) < 65) {
            $hsl = rgbToHsl($val['red'], $val['green'], $val['blue']);
            //$h = $hsv['H'] + .2;
            $h = $hsl[0] + $hueAdjustment;
            // if ($h > 1) --$h;
            $rgb = hslToRgb($h, $hsl[1], $hsl[2]);
            $newCol = imagecolorallocate($img, $rgb[0], $rgb[1], $rgb[2]);
            imagesetpixel($img, $i, $j, $newCol);
        }
    }
}
$file = 'core/imageColor/result.png';
imagepng($img, $file);
echo '<img src="' . $file . '">';