//check(); 调用验证码//thumb('图片文件',是否覆盖,宽度,高度,'重命名前缀');生成缩略图//logo('图片文件',位置,是否覆盖,'重命名前缀');添加图片水印//txt('图片文件',字号,'要添加的水印文字','水印颜色','水印透明度',位置,是否覆盖,'重命名前缀');添加文字水印//thumb('./a.jpg',false,100,100,'logo_');//logo('./a.jpg',5,false,'s_');//txt('./a.jpg',50,'育机构','rand',80,1,false,'t_');include 'inc/i.php';function check($len=4){ session_start(); header('content-type:image/png'); $fs = ['/a.ttf','/b.ttf','/f.ttf']; $font = dirname(__FILE__).$fs[mt_rand(0,1)]; $w = 35*$len; $h = 50; $i = imagecreatetruecolor($w,$h); $c = imagecolorallocatealpha($i,0,0,0,127); //imagecolortransparent($i,$c); //imagefill($i,0,0,$c); imagefilledrectangle($i,0,0,$w,$h,gc($i,'ffffff',mt_rand(0,2))); $sss = ''; for($j=0;$j<$len;$j++){ $st = gs(1); $sss.=$st; imagettftext($i,mt_rand(15,25),mt_rand(-30,30),$j*35+10,mt_rand(28,38),gc($i),$font,$st); } $_SESSION['code'] = $sss; imagesetthickness($i,mt_rand(2,8)); for($j=0;$j<mt_rand(5,10);$j++){ imagefilledarc($i,mt_rand(0,$w),mt_rand(0,$h),mt_rand(0,$w),mt_rand(0,$h),mt_rand(0,360),mt_rand(0,360),gc($i,'rand',mt_rand(100,120)),IMG_ARC_NOFILL); } for($j=0;$j<10;$j++){ imagettftext($i,mt_rand(10,15),mt_rand(-5,5),mt_rand(0,$w),mt_rand(0,$h),gc($i,'rand',mt_rand(100,120)),$font,gs(1)); } imagepng($i); imagedestroy($i); }function gs($n=4){ $s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $t = ''; for($i=0;$i<$n;$i++){ $t.=substr($s,mt_rand(0,strlen($s)-1),1); } return $t;}/** * 生成缩略 */function thumb($i,$f=false,$w=220,$h=0,$fn='s_'){ $ii = getimagesize($i); if($ii[2]==2){ if($ii[0]>$w){ $src = imagecreatefromjpeg($i); $sw = $ii[0]; $sh = $ii[1]; $h = $h==0 ? $w/$sw*$sh : $h; //建立新的缩略图 $dst = imagecreatetruecolor($w,$h); imagecopyresampled($dst,$src,0,0,0,0,$w,$h,$sw,$sh); if($f){ imagejpeg($dst,$i); }else{ $path = dirname($i).'/'; $name = $fn.substr($i,strrpos($i,'/')+1); imagejpeg($dst,$path.$name); } imagedestroy($dst); imagedestroy($src); } }}/** * 功能:生成水银图标,水银图标文件在inc目录中 名称 logo.png */function logo($i,$p=5,$f=true,$fn='logo_'){ $ii = getimagesize($i); if($ii[2]==2){ if($ii[0]>300){ $ni = imagecreatefromjpeg($i); $w = $ii[0]; $h = $ii[1]; //水银图标 logo.png 格式 $logo = dirname(__FILE__).'/logo.png'; $li = imagecreatefrompng($logo); $liw = imagesx($li); $lih = imagesy($li); $x = ($w-$liw)/2; $y = ($h-$lih)/2; $pad = 35; switch($p){ case 1: $x = 0+$pad; $y = 0+$pad; break; case 2: $y = 0+$pad; break; case 3: $x = $w-$liw-$pad; $y = 0+$pad; break; case 4: $x = 0+$pad; break; case 6: $x = $w-$liw-$pad; break; case 7: $x = 0+$pad; $y = $h-$lih-$pad; break; case 8: $y = $h-$lih-$pad; break; case 9: $x = $w-$liw-$pad; $y = $h-$lih-$pad; break; } imagecopy($ni,$li,$x,$y,0,0,$liw,$lih); if($f){ imagejpeg($ni,$i); }else{ $path = dirname($i).'/'; $name = $fn.substr($i,strrpos($i,'/')+1); imagejpeg($ni,$path.$name); } imagedestroy($ni); imagedestroy($li); } }}function txt($i,$s=30,$t='版权所有',$c='rand',$a=0,$p=5,$f=true,$fn='t_'){ $font = dirname(__FILE__).'/f.ttf'; $ii = getimagesize($i); if($ii[2]==2){ if($ii[0]>300){ $ni = imagecreatefromjpeg($i); $pos = imagettfbbox($s,0,$font,$t); $pad = 30; switch($p){ case 1://左上角 $x = 0-$pos[0]+$pad; $y = 0-$pos[7]+$pad; break; case 2://上边 水平中央 $x = ($ii[0]-$pos[2])/2; $y = 0-$pos[7]+$pad; break; case 3: $x = $ii[0]-$pos[2]-$pad; $y = 0-$pos[7]+$pad; break; case 4: $x = 0-$pos[0]+$pad; $y = ($ii[1]-$pos[6])/2; break; case 5: $x = ($ii[0]-$pos[2])/2; $y = ($ii[1]-$pos[6])/2; break; case 6: $x = $ii[0]-$pos[2]-$pad; $y = ($ii[1]-$pos[6])/2; break; case 7: $x = 0-$pos[0]+$pad; $y = $ii[1]-$pos[6]-$pad; break; case 8: $x = ($ii[0]-$pos[2])/2; $y = $ii[1]-$pos[6]-$pad; break; case 9: $x = $ii[0]-$pos[2]-$pad; $y = $ii[1]-$pos[6]-$pad; break; } imagettftext($ni,$s,0,$x,$y,gc($ni,$c,$a),$font,$t); if($f){ imagejpeg($ni,$i); }else{ $path = dirname($i).'/'; $name = $fn.substr($i,strrpos($i,'/')+1); imagejpeg($ni,$path.$name); } imagedestroy($ni); } }}function gc($i,$c='rand',$a=0){ $color = ''; switch($c){ case 'white': $color = imagecolorallocatealpha($i,255,255,255,$a); break; case 'black': $color = imagecolorallocatealpha($i,0,0,0,$a); break; case 'red': $color = imagecolorallocatealpha($i,255,0,0,$a); break; case 'green': $color = imagecolorallocatealpha($i,0,255,0,$a); break; case 'rand': $color = imagecolorallocatealpha($i,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255),$a); break; default: $cc = str_split($c,2); $color = imagecolorallocatealpha($i,hexdec($cc[0]),hexdec($cc[1]),hexdec($cc[2]),$a); break; } return $color;}