【发布时间】:2011-07-19 01:59:04
【问题描述】:
我想使用 PHP 从给定的十六进制值中获得更亮的十六进制颜色阴影输出。例如,我将颜色#cc6699 作为输入,我希望#ee88aa 作为输出颜色。我将如何在 PHP 中执行此操作?
【问题讨论】:
我想使用 PHP 从给定的十六进制值中获得更亮的十六进制颜色阴影输出。例如,我将颜色#cc6699 作为输入,我希望#ee88aa 作为输出颜色。我将如何在 PHP 中执行此操作?
【问题讨论】:
您需要将颜色转换为 RGB,进行添加,然后再转换回来:
// Convert string to 3 decimal values (0-255)
$rgb = array_map('hexdec', str_split("cc6699", 2));
// Modify color
$rgb[0] += 34;
$rgb[1] += 34;
$rgb[2] += 17;
// Convert back
$result = implode('', array_map('dechex', $rgb));
echo $result;
【讨论】:
34 == 0x22 和 17 = 0x11。 0xcc + 0x22 => 0xcc, 0x66 + 0x22 => 0x88, 0x99c + 0x11 => 0xaa。大家一起:#cc6699 => #ee88aa.
1。将颜色分成三个元素:cc、66、99 2.用http://php.net/manual/de/function.hexdec.php将其转换为十进制 3.增加三个十进制值 4.再次将十进制转换为十六进制 5. 将三个元素放在一起
【讨论】:
与您的问题没有直接关系,但这篇文章对颜色转换很有趣:http://beesbuzz.biz/code/hsv_color_transforms.php
【讨论】:
最好的解决方案是将RGB 转换为HSL or HSV(只需在google 中搜索php converter hsl/hsv)。
然后您可以使用色彩空间的“亮度”或“值”值。
然后将其转换回 RGB 颜色空间。
【讨论】: