解析变量值以在php中填充imagefill颜色

时间:2019-07-01 08:41:37

标签: php forms image creation imagejpeg

我用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);

当我这样做时,我只会得到一个灰色的小方块,因此它无法按预期工作。

有什么方法可以使其工作?正确吗?

1 个答案:

答案 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]);