使用PHP选择合适的背景/前景色

Liz*_*ard 5 php colors imagemagick gdlib

我正在寻找一个为什么要计算一个合适的背景颜色和文本的颜色将超过顶部,显然我需要考虑可读性和可访问性.

我需要从数组中选择两种颜色,颜色存储在它们的十六进制表示中.

#CC9966
#996633
#FFCC99
#CCCC99
#000000
#333333
#666633
#663333
#CC9933
#FFCCCC
Run Code Online (Sandbox Code Playgroud)

我可以使用像GD/imageMagick这样的PHP库吗?

任何建议(请注意我使用的是PHP)

Ali*_*xel 2

首先,我认为您应该看看Particletree上这篇优秀的博客文章。

话虽这么说,我会使用他们的 smarty_modifier_contrast() 函数并对其进行一些修改以满足您的特定需求,例如:

function color_contrast($bgcolor, $color1, $color2, $color3, ...)
{
    return (hexdec($bgcolor) > 0xffffff / 2) ? min(array_slice(func_get_args(), 1)) : max(array_slice(func_get_args(), 1));
}
Run Code Online (Sandbox Code Playgroud)

因此,您只需要为背景使用任何随机颜色(不要忘记删除#),然后将所有其他颜色传递给数组,在这种情况下,我使用了可变数量的参数,但您可以更改它接受单个颜色数组 - 然后它会根据以下情况自动选择最暗或最亮的颜色,$bgcolor并提供足够好的对比度以提高可读性:

function color_contrast($bgcolor, $colors = array())
{
    return (hexdec($bgcolor) > 0xffffff / 2) ? min($colors) : max($colors);
}
Run Code Online (Sandbox Code Playgroud)

要选择$bgcolor,您可以像我之前所说的那样随机执行,或者使用第二个函数来帮助您完成此任务,例如饱和度亮度,这实际上取决于您要寻找的内容。