调用PHP函数

时间:2009-12-22 19:08:23

标签: php function gd

我有以下功能,可以根据文本参数生成和保存图像。我怎么能在我的文件中调用它?我试过了

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 个答案:

答案 0 :(得分:3)

该消息表示该页面已经向浏览器发送了一些数据 - 如果您认为这不应该发生,那么它可能是您的PHP文件中某处的某些空白。您需要找到它的来源并将其删除。

如果它确实是空格,那么this thread可能会有所帮助。

答案 1 :(得分:3)

你是如何调用这个文件的?如果你在<img>标签内或从CSS指令中调用它,那么就像C. Walsh所说并检查文件中的空格(提示:对于二进制数据,不包括结束{{脚本中的1}}标记以及文件开头的Byte Order Mark(使用像PSPad这样的HEX编辑器。)

您可能还需要考虑,因为在图像脚本执行期间可能会发生错误,将脚本内容包装在ob_start()ob_end_clean()中,其中ob_end_clean()在标题之前调用发送并生成图像。

如果您直接从要嵌入图像的文件中调用它,请使用以下HTML方案:

?>

其中DATADATADATA是图像的base64编码版本。

见:

  1. Data URI Scheme
  2. PHP Manual Entry for base64_encode()

答案 2 :(得分:1)

在任何内容作为响应发送后,使用header()函数(第三行最后一行)是不可能的,因为标头需要在所有http通信中首先发送。确保您的php文件在<?php之前或?>

之后没有空格

答案 3 :(得分:1)

您获得的错误是由于在函数末尾附近调用“header”之前输出发送到浏览器引起的。

您可能在第一个和最后一个<?php ?>标签之外有一些空格。发生这种情况时,PHP会自动向浏览器发送标题,表明您正在输出HTML文档。一旦发生这种情况,您就不能再改变标题,PHP会发出错误。

追踪输出的来源;尝试查看文档的来源,并确保在所包含的文件中没有前导/尾随空格。