Вызов функции PHP - PullRequest
       9

Вызов функции PHP

0 голосов
/ 22 декабря 2009

У меня есть следующая функция, которая генерирует и сохраняет изображение на основе текстового параметра. Как я могу назвать это в моем файле? Я пытался

INCLUDE 'outPrice.php'; 

для ссылки на внешний PHP и вызова его с помощью этой команды,

outPrice($text);

На что я получил следующий ответ.

Warning: Cannot modify header information - headers already sent 

Любая помощь будет оценена.

function outPrice($textval){
    $textcolor = '666666';


    $font="bgtbt.ttf";
    $size = 20;
    $padding= 1;
    $bgcolor= "ffffff";

    $transparent = 0;
    $antialias = 0;

    $fontfile = $fontpath.$font;

    $box= imageftbbox( $size, 0, $fontfile, $textval, array());
    $boxwidth= $box[4];
    $boxheight= abs($box[3]) + abs($box[5]);
    $width= $boxwidth + ($padding*2) + 1;
    $height= $boxheight + ($padding) + 0;
    $textx= $padding;
    $texty= ($boxheight - abs($box[3])) + $padding;

    // create the image
    $png= imagecreate($width, $height);


    $color = str_replace("#","",$bgcolor);
    $red = hexdec(substr($bgcolor,0,2));
    $green = hexdec(substr($bgcolor,2,2));
    $blue = hexdec(substr($bgcolor,4,2));
    $bg = imagecolorallocate($png, $red, $green, $blue);

    $color = str_replace("#","",$textcolor);
    $red = hexdec(substr($textcolor,0,2));
    $green = hexdec(substr($textcolor,2,2));
    $blue = hexdec(substr($textcolor,4,2));
    $tx = imagecolorallocate($png, $red, $green, $blue);


    imagettftext( $png, $size, 0, $textx, $texty, $tx, $fontfile, $textval );

    header("content-type: image/jpeg");
    imagejpeg($png, "price".$textval.".jpg");
    imagedestroy($png);

}

Ответы [ 4 ]

3 голосов
/ 22 декабря 2009

Как вы вызываете этот файл? Если вы вызываете его внутри тега <img> или из директивы CSS, то делайте так, как говорит С. Уолш, и проверяйте пробелы в файле (совет: для двоичных данных не включайте закрывающий тег ?> в вашем скрипте), а также Порядок следования байтов в начале вашего файла (используйте для этого HEX-редактор, например PSPad ).

Вы также можете учесть, что во время выполнения вашего графического сценария могут возникать ошибки, заключая содержимое сценария в ob_start() и ob_end_clean(), где ob_end_clean() вызывается непосредственно перед отправкой заголовков и созданием изображения.

Если вы вызываете его непосредственно из файла, в который вы хотите встроить изображение, используйте следующую схему HTML:

<img src="data:image/png;base64,DATADATADATA" alt ="" />

Где DATADATADATA - версия вашего образа в кодировке base64.

См .:

  1. Схема URI данных
  2. PHP Ручной ввод для base64_encode()
3 голосов
/ 22 декабря 2009

Это сообщение означает, что страница уже отправила некоторые данные в браузер - если вы не думаете, что это должно было произойти, это может быть пробел где-то в ваших PHP-файлах. Вам нужно будет найти, откуда он, и удалить его.

Если это окажется пробел, тогда эта ветка может быть полезна.

1 голос
/ 22 декабря 2009

Ошибка, которую вы получаете, вызвана тем, что вывод отправляется в браузер до того, как вы вызовете «заголовок» в конце функции.

Скорее всего, у вас есть пустое пространство за пределами ваших первого и последнего тегов <?php ?>. Когда это происходит, PHP автоматически отправляет заголовки в браузер, указывая, что вы выводите HTML-документ. Как только это произошло, вы больше не можете изменять заголовки, и PHP выдает ошибку.

Отследить, откуда поступает вывод; попробуйте просмотреть исходный документ и убедитесь, что в файлах нет начальных / конечных пробелов.

1 голос
/ 22 декабря 2009

Использование функции header () (третья последняя строка) после того, как какой-либо контент был отправлен в качестве ответа, невозможно, поскольку заголовки должны отправляться первыми во всех сообщениях http. Убедитесь, что ваши php-файлы не имеют пробелов до <?php или после ?>

...