发布时间:2022-07-05 文章分类:PHP 知识 投稿人:李佳 字号: 默认 | | 超大 打印

php不能生成图片的解决办法

解决办法

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教程