我用php创建了一个图像生成器,我遇到了问题。
我有一个表格,要求输入已经定义的颜色
<select name="background color">
<option value=" 255, 0, 0">Red</option>
<option value="0,128,0">Green</option>
</select>
一旦选择它并执行我的操作,它就会通过POST方法存储在变量中
?php
$height=$_POST['height'];
$width=$_POST['width'];
$cbackground=$_POST['backgroundcolor'];
$ctext=$_POST['text color'];
$text=$_POST['text'];
$arr = get_defined_vars();
header('Content-Type:image/jpeg');
$img = imagecreatetruecolor($width, $height);
imagefill($img, 0, 0, 255, 545, 543);
正如您在最后一行中看到的那样,我对颜色进行了硬编码,但是我想要完成的是像这样从cbackground变量中调用值 或类似。
imagefill($img, 0, 0, $cbackground);
当我这样做时,我只会得到一个灰色的小方块,因此它无法按预期工作。
有什么方法可以使其工作?正确吗?
答案 0 :(得分:0)
因此,您可以使用的值部分:
<select name="backgroundcolor">
<option value=" 255, 0, 0">Red</option>
<option value="0,128,0">Green</option>
</select>
然后展开字符串以获取包含3个数字的数组:
$valueArray = explode(",",str_replace(" ","",$_POST['backgroundcolor']));
现在您有了一个由组成的数组:
[0] => 255,
[1] => 0,
[2] => 0
所以您只需要像这样使用它即可:
imagefill($img, 0, 0, $valueArray[0], $valueArray[1], $valueArray[2]);