我有一张图像,我想根据变量设置的颜色更改颜色。我遇到的问题是,该值来自数据源作为十六进制,而imagecolourset与rgb一起使用。 我已成立了一个转换功能:如何将十六进制转换为rgb以便它可以与imagecolourset一起使用?
function hex2rgb($hex) {
$hex = str_replace("#", "", $hex);
if(strlen($hex) == 3) {
$r = hexdec(substr($hex,0,1).substr($hex,0,1));
$g = hexdec(substr($hex,1,1).substr($hex,1,1));
$b = hexdec(substr($hex,2,1).substr($hex,2,1));
} else {
$r = hexdec(substr($hex,0,2));
$g = hexdec(substr($hex,2,2));
$b = hexdec(substr($hex,4,2));
}
$rgb = array($r, $g, $b);
return implode(",", $rgb); // returns the rgb values separated by commas
}
,然后用这个像这样:
$homeRGB = hex2rgb($homeColour);
imagecolorset($him,$hindex, $homeRGB);
,但我得到一个错误消息说,imagecolorset只节选5个参数而且只有3套。结果应该打印225,225,225,所以我不明白为什么它只读取1个参数而不是3个。如果我手动输入225,225,225,那么代码工作正常。不知道我去哪里错了?
我曾试图把结果变成整数使用不同的方法,但没有奏效。非常感谢你的帮助 :-) – rmsGreig