解决办法
1、打开gd2库,通过phpinfo进行查看。清除bom,代码是顶行开始写的,所以问题可能出现在代码上。
2、在header前加上ob_clean()语句,随后就可以运行了。
注意点
生成图片时,header('Content-type: image/png');前面不能有输出。或者,前面加:ob_clean(); 即使用输出也可以通过这句来清除输出缓存。
解决实例
//设置验证码高度宽度\上面字符个数 $img_w=70; $img_h=22; $font=5; $char_len=5; //数组合并,range()函数返回一个范围数组 $char=array_merge(range('a','z'),range('A','Z'),range('1','9')); $rand_keys=array_rand($char,$char_len);//随机从数组中取指定个数的元素,生成键值 if($char_len==1){//若只有一个数,则array_rand()返回非数组类型 $rand_keys=array($rand_keys); } shuffle($rand_keys);//可以不用 $code=''; foreach($rand_keysas$k){ $code.=$char[$k]; } session_start(); $_SESSION['captcha']=$code; //添加线、色 //创建新图像 $img=imagecreatetruecolor($img_w,$img_h); //分配颜色 $bg_color=imagecolorallocate($img,0xcc,0xcc,0xcc); //画布背景色 imagefill($img,0,0,$bg_color); //干扰线 for($i=0;$i<300;++$i){ $color=imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); imagesetpixel($img,mt_rand(0,$img_w),mt_rand(0,$img_h),$color); } for($i=0;$i<=10;++$i){ //设置直线颜色 $color=imageColorAllocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); //在$img图像上随机画一条直线 imageline($img,mt_rand(0,$img_w),mt_rand(0,$img_h),mt_rand(0,$img_w),mt_rand(0,$img_h),$color); //imagesetpixel($img,mt_rand(0,$img_w),mt_rand(0,$img_h),$color); } //加加框 $rect_color=imagecolorallocate($img,0x90,0x90,0x90); imagerectangle($img,0,0,$img_w-1,$img_h-1,$rect_color); $str_color=imagecolorallocate($img,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100)); $font_w=imagefontwidth($font); $font_h=imagefontheight($font); $str_len=$font_w*$char_len; imagestring($img,$font,($img_w-$str_len)/2,($img_h-$font_h)/2,$code,$str_color);
以上就是php不能生成图片的解决办法,希望对大家有所帮助。更多php学习指路:php教程