当前位置:首页 > PHP教程 > php图像处理 > 列表

php生成验证码,缩略图及水印图的类分享

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-27 10:58:27 浏览: 评论:0 

这篇文章主要给大家分享的是php生成验证码,缩略图,及水印图的类,十分的实用,有需要的小伙伴可以参考下,封装了一个类,可生成验证码,缩略图,及水印图,分享给大家。

  1. <?php 
  2. class image{ 
  3.   session_start(); 
  4.   //验证码类 
  5.   static public function verify($code,$width=75,$height=25,$n=4){ 
  6.     header("content-type:image/png"); 
  7.     // 创建画布 
  8.     $img=imagecreatetruecolor($width,$height); 
  9.     // 设置背景色 
  10.     $bgcolor=imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),rand(200,255)); 
  11.     // 将背景色填充 
  12.     imagefill($img,0,0,$bgcolor); 
  13.     // 绘制五条弧线 
  14.     for($i=0;$i<5;$i++){ 
  15.       $arccolor=imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),rand(200,255)); 
  16.       imagearc($img,mt_rand(5,($width-5)),mt_rand(5,($height-5)),mt_rand(5,($width-5)),mt_rand(5,($height-5)),mt_rand(0,360),mt_rand(0,360),$arccolor); 
  17.     } 
  18.     // 绘制一百个点 
  19.     for($i=0;$i<100;$i++){ 
  20.       $pixelcolor=imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),rand(200,255)); 
  21.       imagesetpixel($img,mt_rand(1,($width-1)),mt_rand(1,($height-1)),$pixelcolor); 
  22.     } 
  23.     // 绘制五条线段 
  24.     for($i=0;$i<5;$i++){ 
  25.       $linecolor=imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),rand(200,255)); 
  26.       imageline($img,mt_rand(1,($width-1)),mt_rand(1,($height-1)),mt_rand(1,($width-1)),mt_rand(1,($height-1)),$linecolor); 
  27.     } 
  28.     // 设置边框颜色 
  29.     $bdcolor=imagecolorallocate($img,mt_rand(150,200),mt_rand(150,200),rand(150,200)); 
  30.     // 绘制一个矩形无填充边框 
  31.     imagerectangle($img,0,0,($width-1),($height-1),$bdcolor); 
  32.     // 设置验证码字符串 
  33.     $str=''
  34.     for($i=1;$i<=$n;$i++){ 
  35.       $str.=substr(str_shuffle($code),0,1); 
  36.     } 
  37.     $_SESSION['a']=$str
  38.     // 
  39.     for($i=0;$i<$n;$i++){ 
  40.       $textcolor=imagecolorallocate($img,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150)); 
  41.       imagettftext($img,1/($n+1)*$width,mt_rand(-20,20),((1-$n/(5+$n))*$width/($n-1)+$i*1/($n+1)*$width),1/2*($height+3/5*$height),$textcolor,'1.ttf',substr($str,$i,1)); 
  42.     } 
  43.     // 打印图像 
  44.     imagepng($img); 
  45.     // 释放资源 
  46.     imagedestroy($img); 
  47.     return $str
  48.   } 
  49.   //缩略图类 
  50.   /* 
  51.   *$source需要缩略的图片 
  52.   */ 
  53.   static public function thumbnail($source,$deletesource=false,$width=180){ 
  54.     $info=getimagesize($source); 
  55.     //getimagesize方法获得图像的详细信息 
  56.     $createFun=str_replace('/','createfrom',$info['mime']); 
  57.     //将getimagesize中的['mime']中的/替换,变为imagecreatefromjpeg方法 
  58.     $src=$createFun($source); 
  59.     //创建图像 
  60.     $dst_w=$width
  61.     //缩略图的宽 
  62.     $dst_h=$width/$info[0]*$info[1]; 
  63.     //计算缩略图的高 
  64.     $dst=imagecreatetruecolor($dst_w,$dst_h); 
  65.     //新建一个真彩色图像 
  66.     imagecopyresampled($dst,$src,0,0,0,0,$dst_w,$dst_h,$info['0'],$info['1']); 
  67.     //重采样拷贝部分图像并调整大小 
  68.     $saveFun=str_replace('/','',$info['mime']); 
  69.     //设置保存函数 
  70.     $ext=strrchr($source,'.'); 
  71.     //strrchr查找指定字符在字符串中的最后一次出现,返回包括其自身在内的剩余的字符串 
  72.     $thumbnailName=str_replace($ext,'',$source).'_thumbnail'.$ext
  73.     //设置保存路径 
  74.     if(!$deletesource){ 
  75.       $saveFun($dst,$thumbnailName); 
  76.       //保存图像 
  77.     }else
  78.       $saveFun($dst,$thumbnailName); 
  79.       unlink($source); 
  80.       //删除原图 
  81.     } 
  82.     imagedestroy($src); 
  83.     //销毁资源 
  84.     imagedestroy($dst); 
  85.     //销毁资源 
  86.     return $thumbnailName
  87.    
  88.   } 
  89.   //水印图类 
  90.   /* 
  91.   *$srcing水印图 
  92.   *$dsting原图 
  93.   */ 
  94.   static public function watermark($dstimg,$srcimg){ 
  95.     $dstinfo=getimagesize($dstimg); 
  96.     //getimagesize方法获取该图片的详细信息(该方法返回的是一个详细的数组) 
  97.     $srcinfo=getimagesize($srcimg); 
  98.     $createdst=str_replace('/','createfrom',$dstinfo['mime']); 
  99.     //将getimagesize方法返回的数组中的mime值中的/替换,结果为imagecreatefromjpeg 
  100.     $createsrc=str_replace('/','createfrom',$srcinfo['mime']); 
  101.     $dst=$createdst($dstimg); 
  102.     //替换后为imagecreatefromjpeg函数,创建一个图像 
  103.     $dst_w=imagesx($dst); 
  104.     //获取大图的宽 
  105.     $dst_h=imagesy($dst); 
  106.     //获取大图的高 
  107.     $src=$createsrc($srcimg); 
  108.     //替换后为imagecreatefromjpeg函数,创建一个图像 
  109.     $src_w=imagesx($src); 
  110.     //获取水印图的宽 
  111.     $src_h=imagesy($src); 
  112.     //获取水印图的高 
  113.     $watermaker=imagecopy($dst,$src,($dst_w-$src_w),($dst_h-$src_h),0,0,$src_w,$src_h); 
  114.     //将水印图复制在大图上 
  115.     $saveFun=str_replace('/','',$dstinfo['mime']); 
  116.     //将getimagesize返回数组中的['mime']中的斜杠替换为空,替换后的值为imagejpeg,即为保存函数 
  117.     $ext=strrchr($dstimg,'.'); 
  118.     //strrchr查找指定字符在字符串中的最后一次出现,返回包括其自身在内的剩余的字符串 
  119.     $watermaker=str_replace($ext,'',$dstimg).'_water'.time().$ext
  120.     //保存名 
  121.     $saveFun($dst,$watermaker); 
  122.     //保存图片,第一个参数为要保存的图片,第二个参数为保存路径或保存名 
  123.     imagedestroy($dst); 
  124.     //销毁资源 
  125.     imagedestroy($src); 
  126.     //销毁资源 
  127.     return $watermaker
  128.   } 
  129. ?>

Tags: php生成验证码 php缩略图

分享到: