我有以下功能,可以根据文本参数生成和保存图像。我怎么能在我的文件中调用它?我试过了
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);
}
答案 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编码版本。
见:
答案 2 :(得分:1)
在任何内容作为响应发送后,使用header()函数(第三行最后一行)是不可能的,因为标头需要在所有http通信中首先发送。确保您的php文件在<?php
之前或?>
答案 3 :(得分:1)
您获得的错误是由于在函数末尾附近调用“header”之前输出发送到浏览器引起的。
您可能在第一个和最后一个<?php ?>
标签之外有一些空格。发生这种情况时,PHP会自动向浏览器发送标题,表明您正在输出HTML文档。一旦发生这种情况,您就不能再改变标题,PHP会发出错误。
追踪输出的来源;尝试查看文档的来源,并确保在所包含的文件中没有前导/尾随空格。