PHP 5 imagesetpixel参数

时间:2013-09-03 13:13:03

标签: php gd

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

2 个答案:

答案 0 :(得分:1)

如果没有记录,您无权期待任何事情。您的期望与实际行为之间的任何相关性都要记录在案,或者必须视为偶然发生。

答案 1 :(得分:1)

以下是imagecolorallocate()的作用:https://bitbucket.org/libgd/gd-libgd/src/de7acbfe3e9e43b6b74b740e192915aff4e45a5d/src/gd.c?at=master#cl-518

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

现在,当您将任何值传递给imagesetpixel()时,PHP可以转换为整数,它将起作用。

你甚至可以自己做(未经测试,可能无法使用truecolor上下文):

$im_color = pack('SSSS', $r, $g, $b, $a);

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