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

php图片处理类,生成缩略图,增加水印,获取图片信息

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-19 14:02:44 浏览: 评论:0 

本文章提供这款图片处理类,他可以做的事情是把图片生成缩略图,可以给图片增加水印以及获取图片信息,算是比较实用代码又简洁的函数,实例代码如下:

  1. class image 
  2.  public $info=array(); 
  3.  
  4.  function __construct() 
  5.  { 
  6.   !extension_loaded('gd') && exit("www.111cn.net提示:服务器环境不支持gd库"); 
  7.   return true; 
  8.  } 
  9.  
  10.  function image() 
  11.  { 
  12.   $this->__construct(); 
  13.  } 
  14.   
  15.  function thumb($image,$thumb_width=300,$thumb_height=225) 
  16.  { 
  17.   $info=$this->info($image); 
  18.   $scale=min(1,min($thumb_width/$info['width'],$thumb_height/$info['height'])); //按比例缩放 
  19.   $thumb_width=intval($info['width']*$scale); 
  20.   $thumb_height=intval($info['height']*$scale); 
  21.   $createfunc='imagecreatefrom'.($info['type']=='jpg'?'jpeg':$info['type']); 
  22.   $im=$createfunc($image); 
  23.   $thumb_im=$info['type']!='gif' && function_exists('imagecreatetruecolor')?imagecreatetruecolor($thumb_width,$thumb_height):imagecreate($thumb_width,$thumb_height); 
  24.   imagecopyresampled($thumb_im,$im,0,0,0,0,$thumb_width,$thumb_height,$info['width'],$info['height']); 
  25.   if($info['type']=='gif' || $info['type']=='png'
  26.   { 
  27.    $bgcolor=imagecolorallocate($thumb_im,0,255,0); 
  28.    imagecolortransparent($thumb_im,$bgcolor); 
  29.   } 
  30.   $imagefunc='image'.($info['type']=='jpg'?'jpeg':$info['type']); 
  31.   $thumbname='thumb_'.$info['name'].'.'.$info['type']; 
  32.   $imagefunc($thumb_im,$info['path'].$thumbname); 
  33.   imagedestroy($im); 
  34.   imagedestroy($thumb_im); 
  35.   return $info['path'].$thumbname;   
  36.  } 
  37.  
  38.  function watermark($image,$pos=9,$watermarkimg='images/watermark.gif',$pct=65,$text='',$w_font=5,$w_color='#ff0000'
  39.  { 
  40.   $imageinfo=$this->info($image); 
  41.   $source_w=$imageinfo['width']; 
  42.   $source_h=$imageinfo['height']; 
  43.   $imagecreatefunc='imagecreatefrom'.($imageinfo['type']=='jpg'?'jpeg':$imageinfo['type']); 
  44.   $im=$imagecreatefunc($image); 
  45.   if(!emptyempty($watermarkimg) && file_exists($watermarkimg)) //添加图片水印 
  46.   { 
  47.    $iswaterimage=true; 
  48.    $watermarkinfo=$this->info($watermarkimg); 
  49.    $width=$watermarkinfo['width']; 
  50.    $height=$watermarkinfo['height']; 
  51.    $watermarkcreatefunc='imagecreatefrom'.($watermarkinfo['type']=='jpg'?'jpeg':$watermarkinfo['type']); 
  52.    $watermark_im=$watermarkcreatefunc($watermarkimg); 
  53.   } 
  54.   else //添加文字水印 
  55.   { 
  56.    $iswaterimage=false; 
  57.    if(!emptyempty($w_color) && strlen($w_color)==7) 
  58.    { 
  59.     $r=hexdec(substr($w_color,1,2)); 
  60.     $g=hexdec(substr($w_color,3,2)); 
  61.     $b=hexdec(substr($w_color,5,2)); 
  62.    } 
  63.    $temp = imagettfbbox(ceil($w_font*2.5), 0, 'fonts/alger.ttf'$text); 
  64.    $width = $temp[2] - $temp[6]; 
  65.    $height = $temp[3] - $temp[7]; 
  66.    unset($temp); 
  67.   } 
  68.   switch($pos
  69.   { 
  70.    case 0: 
  71.     $wx = mt_rand(0,($source_w - $width)); 
  72.     $wy = mt_rand(0,($source_h - $height)); 
  73.     break
  74.    case 1: 
  75.     $wx = 5; 
  76.     $wy = 5; 
  77.     break
  78.    case 2: 
  79.     $wx = ($source_w - $width) / 2; 
  80.     $wy = 5; 
  81.     break
  82.    case 3: 
  83.     $wx = $source_w - $width-5; 
  84.     $wy = 5; 
  85.     break
  86.    case 4: 
  87.     $wx = 5; 
  88.     $wy = ($source_h - $height) / 2; 
  89.     break
  90.    case 5: 
  91.     $wx = ($source_w - $width) / 2; 
  92.     $wy = ($source_h - $height) / 2; 
  93.     break
  94.    case 6: 
  95.     $wx = $source_w - $width-5; 
  96.     $wy = ($source_h - $height) / 2; 
  97.     break
  98.    case 7: 
  99.     $wx = 5; 
  100.     $wy = $source_h - $height-5; 
  101.     break
  102.    case 8: 
  103.     $wx = ($source_w - $width) / 2; 
  104.     $wy = $source_h - $height-5; 
  105.     break
  106.    default
  107.     $wx = $source_w - $width-5; 
  108.     $wy = $source_h - $height-5; 
  109.     break
  110.   } 
  111.   if($iswaterimage
  112.   { 
  113.    if($imageinfo['type'] == 'png') { 
  114.     imagecopy($im$watermark_im$wx$wy, 0, 0, $width$height); 
  115.    } else { 
  116.     imagecopymerge($im$watermark_im$wx$wy, 0, 0, $width$height$pct); 
  117.    } 
  118.   } 
  119.   else 
  120.   { 
  121.    imagestring($im,$w_font,$wx,$wy,$text,imagecolorallocate($im,$r,$g,$b)); 
  122.   } 
  123.   $imagefunc='image'.($imageinfo['type']=='jpg'?'jpeg':$imageinfo['type']); 
  124.   $imagefunc($im,$image); 
  125.   imagedestroy($im); 
  126.   return true; 
  127.  } 
  128.  
  129.  function info($image
  130.  {//开源代码phpfensi.com 
  131.   $info=array(); 
  132.   $info['size']=filesize($image); 
  133.   $imageinfo=getimagesize($image); 
  134.   $info['width']=$imageinfo[0]; 
  135.   $info['height']=$imageinfo[1]; 
  136.   $info['width_height']=$imageinfo[3]; 
  137.   $info['mime']=$imageinfo['mime']; 
  138.   unset($imageinfo); 
  139.   $imageinfo=pathinfo($image); 
  140.   $info['path']=$imageinfo['dirname'].'/';  
  141.   $info['type']=strtolower($imageinfo['extension']); //图片类型,不含'.' 
  142.   $info['name']=$imageinfo['filename']; 
  143.   unset($imageinfo,$name); 
  144.   $this->info=$info
  145.   return $info
  146.  } 

Tags: php图片处理类 php生成缩略图

分享到: