代码如下,奇怪的是把imagepng($im)改为imagepng($im,"kk.png")可以得到图片但是直接输出至浏览器就是显示不出来,一直是红叉,这段代码在另一台机器上能正常运行。是我的php配置问题吗?
<?
header("Content-type: image/png");
srand((double)microtime()*1000000);
$login_check_number=strval(rand("11111","99999"));
//$session->setMember("loginCheckNumber", $login_check_number);$im = imagecreate(50,20) or die ("Cannot Initialize new GD image stream");
$black = ImageColorAllocate($im, 9,142,204);
$foreColor = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
imageline($im, 1, 1, 350, 25, $black);
imagearc($im, 200, 15, 20, 20, 35, 190, $white);
imagestring($im, 5, 7, 3, $login_check_number, $white);
for($i=0 ; $i < 100 ; $i ++) //加入干扰象素
{
imagesetpixel($im, rand()%50 , rand()%50 , $foreColor);
}imagepng($im);
imagedestroy($im);
?>

解决方案 »

  1.   

    srand 这个从4.2起不再使用
      

  2.   

    GD库没开的话imagepng($im,"kk.png")能生成kk.png文件吗?
      

  3.   

    那应该是和浏览器有关
    把第一句换成试试 header("Content-type:  image/x-png");
      

  4.   

    在第一行加上试试
    ob_end_clean();
      

  5.   


    不加ob_end_clean();我把php.ini里的output_buffering设为0还是不行啊
      

  6.   


    估计在你 imagepng() 之前有其他的东西输出(比如空格或者BOM),用 ob_end_clean() 把他们全部从缓存中清掉,这样就可以输出干净的 PNG二进制 了。