Проблемы с передачей значения цвета из формы для генерирующейся картинки и надписи

Sharkon

Guest
Проблемы с передачей значения цвета из формы для генерирующейся картинки и надписи

Ситуация следующая - хочу сделать так, чтобы в форме можно было ввести надпись, выбрать цвет фона и цвет текста, а потом показать все это на экране.
Когда просто ставлю числовые значения цвета в php скрипте, все работает. Когда пытаюсь переслать эти данные из формы, не работает - выводит простое пустое поле картинки или цвет надписи не меняется.
Подскажите плиз, почему значение переменной не вставляется из формы в код. В РНР разбираюсь так себе, поэтому сильно не пинайте, если в коде что-то не то.

Вот поскипанный код формы (оставлены только значения цветов и надписи, чтобы не захламлять мессагу):
<form action="test2.php" method="post">
<div align="center">Текст надписи:</div>
<input type="text" name="nadpis" value="Че за ботва?" maxlength="20">

<div align="center">Цвет заднего фона:</div>
<select name="back">
<option value="0xffffff" selected>000 Прозрачный</option>
<option value="0xfffff7">010 Белый</option>
и т.д.
</select>

<div align="center">Цвет шрифта:</div>
<select name="fcol">
<option value="0x18088c" selected>065 Кобальтовый синий</option>
<option value="0xc30000">031 Красный</option>
и т.д.
</select>

А вот сам скрипт.
Проблемные места выделил комментариями.

PHP:
<?php

require('win2uni.php'); 

define(WIDTH, 400);
define(HEIGHT, 60);

header ("Content-type: image/jpeg");
$im = imagecreatetruecolor (400, 60);

imagefill ($im, 0, 0, 0xFFFFFF); //вот здесь не получается подставить переменную $back из формы вместо цвета 0xFFFFFF. Цвет просто не читается.  А если стоит просто числовое значение, как в данный момент, то все ок. 8-(


$text = win2uni ("$nadpis");

$coord = imagettfbbox( 24, 0, "arial.ttf", $text);

$width = $coord[2] - $coord[0];
$height = $coord[1] - $coord[7];

$X = (WIDTH - $width) / 2;
$Y = (HEIGHT + $height) / 2;


imagettftext ($im, 24, 0, $X, $Y, $fcol, "arial.ttf", $text); // И вот здесь $fcol ну никак не хочет браться из формы, не могу понять почему. Опять-таки ставлю значение вроде 0xFFFFFF, тогда все работает. Почему переменная из формы не передается?

imagejpeg ($im);
imagedestroy ($im);
?>
Такая же история при использовании imagecolorallocate. В скрипте прописываю все цвета, пытаюсь формой пердать один из цветов - не читается.

Подскажите плиз, в чем фигня-то? Чувствую, что проблема пустяковая, а понять не могу. :(
 

Кром

Новичок
>imagefill ($im, 0, 0, 0xFFFFFF); //вот здесь не получается подставить переменную $back из формы вместо цвета 0xFFFFFF. Цвет просто не читается. А если стоит просто числовое значение, как в данный момент, то все ок. 8-(

Ну и? Я, лично, не вижу где ты подставляешь данные из формы. Я вообще не вижу где ты работаешь с массивом _POST.

>Подскажите плиз, в чем фигня-то? Чувствую, что проблема пустяковая, а понять не могу.

Фигня в том, что ты не знаешь даже основ языка, с которым пытаешся работать. Это пустяковая проблема решается прочтением первых глав любой книги по php.
 

Sharkon

Guest
Кром, Вы просто невнимательно прочитали, хотя и процитировали. ;)

Написано же - "вот здесь не получается подставить переменную $back из формы вместо цвета 0xFFFFFF."
То есть при
imagefill ($im, 0, 0, $back); значение цвета не передается.

Так же, как и в
imagettftext ($im, 24, 0, $X, $Y, $fcol, "arial.ttf", $text);
не передается $fcol из формы, не могу понять, почему.
 

Sharkon

Guest
Благодарю за подсказку.
Придется таким способом решать.

Но странно то, что похожие решения у меня работают без масива $_POST и все передается нормально, из-за этого вопрос и возник. 8-/
 

Фанат

oncle terrible
Команда форума
а для того, чтобы тебе не было странно, тебе дали ссылку.
но ты, видимо, только со второго раза всё воспринимаешь
 

Sharkon

Guest
Путем вывода через echo выяснил, что переменные при использовании $_POST передаются, но параметры цвета все равно не берутся почему-то.
Хотя есть момент - переменная "$nadpis" передается и читается без $_POST, то есть проблема не в передаче переменных, а в каком-то сбое при создании изображения на их основе.

В формах цвета забиты в поля "bg" - задний фон и "fcol" - цвет шрифта.

Вот итоговый код скрипта:

PHP:
<?php
require('win2uni.php');

define(WIDTH, 400);
define(HEIGHT, 60);

header ("Content-type: image/jpeg");
$im = imagecreatetruecolor (400, 60);

$back = $_POST['bg'];
$fontc = $_POST['fcol'];

imagefill ($im, 0, 0, $back); 
$text = win2uni ("$nadpis");

$coord = imagettfbbox( 24, 0, "arial.ttf", $text);
$width = $coord[2] - $coord[0];
$height = $coord[1] - $coord[7];
$X = (WIDTH - $width) / 2;
$Y = (HEIGHT + $height) / 2;

imagettftext ($im, 24, 0, $X, $Y, $fontc, "arial.ttf", $text);
imagejpeg ($im);
imagedestroy ($im);
?>
Проблема остается в строчках
imagefill ($im, 0, 0, $back); и
imagettftext ($im, 24, 0, $X, $Y, $fontc, "arial.ttf", $text);

Параметры цвета "$back" и "$fontc" из формы в виде 0xfffff7 почему-то не воспринимаются, хотя и передаются.

Подскажите плиз, из-за чего это происходит?
Перечитал кучу факов и доков, понять причин не могу, похожих примеров не встречается. :(
Пробовал дофига вариантов, не выходит каменный цветок. 8-/

Только попрошу по существу. Если сказать кроме грубостей нечего, поберегите свое время и силы.
 

SelenIT

IT-лунатик :)
Параметры цвета "$back" и "$fontc" из формы в виде 0xfffff7 почему-то не воспринимаются, хотя и передаются.
Передаются в виде 16-ричного числа 0xfffff7 или в виде строки '0xfffff7'? Что говорит var_dump($back)?
 

Sharkon

Guest
Действительно передавались в виде строки. :(

var_dump($back) выдал значение string.
После перевода переменных в integer все заработало.
Большое спасибо за помощь. ;)
 
Сверху