PHP5ImageSetPixel参数

PHP5ImageSetPixel参数,php,gd,Php,Gd,我有一个关于PHP函数imagesetpixel的快速问题。根据文档,最后一个参数是使用imagecolorallocate创建的颜色标识符。这是有道理的。然而,我发现我的程序中有一个输入错误,我将十六进制值直接传递给imagesetpixel,它仍然可以正常工作。这是预期的行为吗?文档中没有提到它,所以我倾向于坚持使用颜色标识符,但我想我会问一下以防万一。如果没有文档,你就没有权利期待任何东西。您的期望和实际行为之间的任何关联都是有记录的,或者必须视为偶然发生的。以下是imagecoloral

我有一个关于PHP函数imagesetpixel的快速问题。根据文档,最后一个参数是使用imagecolorallocate创建的颜色标识符。这是有道理的。然而,我发现我的程序中有一个输入错误,我将十六进制值直接传递给imagesetpixel,它仍然可以正常工作。这是预期的行为吗?文档中没有提到它,所以我倾向于坚持使用颜色标识符,但我想我会问一下以防万一。

如果没有文档,你就没有权利期待任何东西。您的期望和实际行为之间的任何关联都是有记录的,或者必须视为偶然发生的。

以下是
imagecolorallocate()
的作用:

基本上,它会输出一个压缩为
int
的RGBA值。您可以这样做,因为and
int
有4个字节,您需要一个字节来表示每种颜色


现在,当您将PHP可以转换为整数的任何值传递到
imagesetpixel()
中时,它就可以工作了

您甚至可以自己执行此操作(未经测试,可能无法使用truecolor上下文):


当然,这整个行为都会在GD的任何未来版本中发生变化,这可能就是为什么它没有被记录下来的原因。

我也这么认为,但我不是PHP方面的专家——我已经多年没有使用过它了。只是确保我没有遗漏任何东西。这不是PHP的专长。这是两个sotware组件相互作用的一个基本原则。我理解这一点,但当我在几年前最后一次使用PHP时,这是一堆废话。我偶然做了一件事,结果成功了——当它是PHP时,谁知道它是否是期望的行为呢-p现在,当您将任何值传递到PHP可以转换为整数的
imagesetpixel()
中时,它就会工作,除非开发人员决定更改实现。感谢您提供的信息。当然,我会坚持按预期使用它,但感谢您指出它在引擎盖下是如何工作的。
$im_color = pack('SSSS', $r, $g, $b, $a);