
解决办法
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教程
原文来自:https://www.py.cn© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END


















































暂无评论内容