<?php
function create_image($user)
{
global $img_source; global $render_folder;
global $id; global $folder;
$quality = 9;
$im = imagecreatefrompng($img_source);
$clr="";
foreach ($user as $value)
{
if(!empty($_SESSION['img_name']))
{
$im = imagecreatefrompng($_SESSION['img_name']);
}
$img_width=imagesx($im);
list($r, $g, $b) = sscanf($value['color'], "#%02x%02x%02x");
$clr=imagecolorallocate($im, $r, $g, $b);
$text_a = explode(' ', $value['name']);
$text_new = ''; $width = $value['box-width']; $linex=1;
foreach($text_a as $word)
{
//Create a new text, add the word, and calculate the parameters of the text
$box = imagettfbbox($value['font-size'], 0, $folder.$value['font'], $text_new.' '.$word);
//if the line fits to the specified width, then add the word with a space, if not then add word with new line
//echo $box[2]." ";
if($box[2] > $width){
$text_new .= "\n".$word; $linex++; //echo "<br>";
} else {
$text_new .= " ".$word;
}
}
$text_new = trim($text_new);
$linslikh=explode("\n",$text_new); $ff=1;
foreach($linslikh as $linslikh1)
{
if($value['center']=="Y")
{
//die();
$xpos = center_text($linslikh1, $folder.$value['font'], $value['font-size'],$width);
$xpos+=$value['x'];
}
else
{
$xpos = $value['x'];
}
$acfont = $value['font-size']*$ff ; $ypos = $acfont + $value['y'];
$ff=$ff+2;
imagettftext($im, $value['font-size'], 0, $xpos, $ypos,$clr, $folder.$value['font'],$linslikh1);
// create the image
}
$output_filename = $id.'_render.png';
imagepng($im, $render_folder.$output_filename, $quality);
imagedestroy($im);
$_SESSION['img_name']=$render_folder.$output_filename;
$_SESSION['render_name']= $output_filename;
}
//die();
}
function center_text($string, $font, $font_size, $image_width){
$dimensions = imagettfbbox($font_size, 0, $font, $string);
return ceil(($image_width - $dimensions[4]) / 2);
}
?>
Код файла ввода данных (откуда ввод данных)
<div class="col-sm-1">
<input required type="text" value="FF8C66" class="jscolor form-control input-lg" name="clr[]" onChange="setColor(this.value,<?php echo $row; ?>);" >
</div>
<div class="col-sm-1">
<input required type="text" value="FF8C66" class="jscolor form-control input-lg" name="Bclr[]" onChange="setBColor(this.value,<?php echo $row; ?>);" >
</div>
(Данные хранятся в этом файле) Другой код файла
$new_array[]=array("name"=>$_POST['text'][$i],
"font-size"=>$_POST['font-size'][$i],
"color"=>$_POST['clr'][$i],
"background-color"=>"#".$_POST['Bclr'][$i],
Выше часть моего кода из некоторых файлов. Я просто хочу добавить цвет фона в мое изображение. Я могу добавить опцию и получить данные. но не могу добавить вывод в мой php файл, который делает изображение из ввода. Надеюсь, вы понимаете мою мысль. Пожалуйста, помогите мне, как я могу добавить цвет фона из входного значения в моем файле php. Извините за плохой английский.
Обновление: я пробовал это таким образом, но не повезло
//
// other code part
//
$Bclr="";
$clr="";
foreach ($user as $value)
//
// other code part
//
list($r, $g, $b) = sscanf($value['Bcolor'], "#%02x%02x%02x");
$Bclr=imagecolorallocate($im, $r, $g, $b);
//
// Other Code Part
//
imagettftext($im, $value['font-size'], 0, $xpos, $ypos,$clr, $Bclr,$folder.$value['font'],$linslikh1);
Создайте другое изображение с imagecreatetruecolor того же размера, что и ваше изображение, выделите фоновый цвет (rgb), используйте imagecopyresampled для объединения двух изображений
На самом деле, более простой метод объясняется в руководстве:
imagecreatetruecolor
ImageColorAllocate
затем создайте прямоугольник, используя цвета из imagecolorallocate,
затем напишите свой текст на изображение.
Смотрите пример с Php.net ниже
http://php.net/manual/en/function.imagettfbbox.php