PHP在没有图像资源的情况下分配颜色
您可以在 PHP GD
中分配颜色吗? 图像资源
?这应该是可能的,因为分配的颜色实际上是一个数字,对吗?
$im = imagecreatetruecolor(100, 100);
$col = imagecolorallocate($im, 255, 0, 0);
print $col."<br/>";
$col2 = imagecolorallocate($im, 255, 0, 0);
print $col2."<br/>";
$im2 = imagecreatetruecolor(600, 100);
$col3 = imagecolorallocate($im, 255, 0, 0);
print $col3;
打印出:
16711680
16711680
16711680
我猜真正的问题是 255、0 和 0 是如何变成 16711680 的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
16711680(十进制)为 0x00FF0000(十六进制)
00 - Alpha 值(十进制 0)
FF - 红色(十进制 255)
00 - 绿色(十进制 0)
00 - 蓝色(十进制 0)
请参阅 http://www.php.net/manual/en/function.imagecolorallocatealpha.php 设置 alpha 字节
编辑:
另外,要回答您的第一个问题 - 是,您可以在没有图像资源的情况下创建颜色(因此无需调用 imagecolorallocate):
$col1 = 0x00FF0000; // 红色
$col2 = 0x0000FF00; // 绿色
// 等...
16711680 (decimal) is 0x00FF0000 (hexadecimal)
00 - Alpha value (0 dec)
FF - Red (255 dec)
00 - Green (0 dec)
00 - Blue (0 dec)
See http://www.php.net/manual/en/function.imagecolorallocatealpha.php to set the alpha byte
Edit:
Also, to answer your first question -- yes, you can create a color without an image resource (and, consequently without a call to imagecolorallocate):
$col1 = 0x00FF0000; // Red
$col2 = 0x0000FF00; // Green
// etc...
不,不是。 GD 可能还必须在图像的调色板中注册该颜色(想想非真彩色图像)。
所以你需要一个图像资源。
No, it's not. GD may also have to register that color in the palette of the image (think non true color images).
So you need an image resource.
颜色索引或颜色 ID 可以通过多种方式确定。这应该有助于发现之路。
更新
***
我不知道为什么,但在看到这个问题后,我编写了以下函数将
类型的颜色值转换为
类型的颜色表达式。希望它对某人有用。 *添加 CMYK 只是因为。 ...选项
-->
'整数',
'rgba', 'rgb', 'cmyk',
'hex', 'rgbaCSS', 'rgbCSS', 'hexCSS', 'hexCSS4'
如果有人想变得非常认真,他们可以编写可选参数来将格式转换为任何格式;使用 sprintf。
The color index, or color id can be determined several ways. This should help on the road to discovery.
Update
***
I'm not sure why, but after seeing this question I wrote the following function to convert
<many>
types of color values to<many>
types of color expressions. Hope it works for someone. *Added CMYK just because. ...Options
-->
'int',
'rgba', 'rgb', 'cmyk',
'hex', 'rgbaCSS', 'rgbCSS', 'hexCSS', 'hexCSS4'
If someone wanted to get really serious, they could write optional arguments for converting the format to any; using sprintf.
使用此功能
Use this function