0

我在使用 php 创建动态图像时遇到问题。我正在使用 Yahoo 小型企业托管。当我尝试设置header('Content-type:image/png') 程序时,在不同的浏览器上什么也不显示。即火狐显示连接超时,铬显示没有收到数据。当我注释该行时,它显示不可读的字符串,即图像代码。问题是什么

这是代码

<?php
   ob_start();
   session_start();
   header('Content-type: image/png');
   header("Vary: Accept");
   header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
   header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
   header("Cache-Control: no-store, no-cache, must-revalidate");
   header("Cache-Control: post-check=0, pre-check=0", false);
   header("Pragma: no-cache");

   $image_width = 120;
   $image_height = 35;
   $characters_on_image = 6;
   $dir = dirname(__FILE__);

   function hexrgb ($hexstr){
      $int = hexdec($hexstr);
      return array("red" => 0xFF & ($int >> 0x10),"green" => 0xFF & ($int >> 0x8),"blue" => 0xFF & $int);
   }

   $font = $dir.'/monofont.ttf';
   $possible_letters = '23456789bcdfghjkmnpqrstvwxyz';
   $random_dots = 0;
   $random_lines = 20;
   $captcha_text_color="0x142864";
   $captcha_noice_color = "0x142864";
   $code = '';
   $i = 0;
   while ($i < $characters_on_image) {
      $code .= substr($possible_letters, mt_rand(0, strlen($possible_letters)-1), 1);
      $i++;
   }

   $_SESSION['captcha']=$code;
   $font_size = $image_height * 0.75;
   $image = @imagecreate($image_width, $image_height);
   $background_color = imagecolorallocate($image, 255, 255, 255);
   $arr_text_color = hexrgb($captcha_text_color);
   $text_color = imagecolorallocate($image,    $arr_text_color['red'],$arr_text_color['green'], $arr_text_color['blue']);
   $arr_noice_color = hexrgb($captcha_noice_color);
   $image_noise_color = imagecolorallocate($image, $arr_noice_color['red'],$arr_noice_color['green'], $arr_noice_color['blue']);

   for( $i=0; $i<$random_dots; $i++ ) {
      imagefilledellipse($image, mt_rand(0,$image_width),mt_rand(0,$image_height), 2, 3, $image_noise_color);
   }

   for( $i=0; $i<$random_lines; $i++ ) {
      imageline($image, mt_rand(0,$image_width), mt_rand(0,$image_height),mt_rand(0,$image_width), mt_rand(0,$image_height), $image_noise_color);
   }
   $textbox = imagettfbbox($font_size, 0, $font, $code);
   $x = ($image_width - $textbox[4])/2;
   $y = ($image_height - $textbox[5])/2;
   imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code);
   ob_clean();
   imagepng($image); 
?>
4

0 回答 0