用php输出图片_php图片处理类(生成缩略图,增加水印,获取图片信息)

更新时间:2016-10-25    来源:图片处理    手机版     字体:

【www.bbyears.com--图片处理】

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

 代码如下

class image
{
 public $info=array();

 function __construct()
 {
  !extension_loaded("gd") && exit("www.111cn.net提示:服务器环境不支持gd库");
  return true;
 }

 function image()
 {
  $this->__construct();
 }
 
 function thumb($image,$thumb_width=300,$thumb_height=225)
 {
  $info=$this->info($image);
  $scale=min(1,min($thumb_width/$info["width"],$thumb_height/$info["height"])); //按比例缩放
  $thumb_width=intval($info["width"]*$scale);
  $thumb_height=intval($info["height"]*$scale);
  $createfunc="imagecreatefrom".($info["type"]=="jpg"?"jpeg":$info["type"]);
  $im=$createfunc($image);
  $thumb_im=$info["type"]!="gif" && function_exists("imagecreatetruecolor")?imagecreatetruecolor($thumb_width,$thumb_height):imagecreate($thumb_width,$thumb_height);
  imagecopyresampled($thumb_im,$im,0,0,0,0,$thumb_width,$thumb_height,$info["width"],$info["height"]);
  if($info["type"]=="gif" || $info["type"]=="png")
  {
   $bgcolor=imagecolorallocate($thumb_im,0,255,0);
   imagecolortransparent($thumb_im,$bgcolor);
  }
  $imagefunc="image".($info["type"]=="jpg"?"jpeg":$info["type"]);
  $thumbname="thumb_".$info["name"].".".$info["type"];
  $imagefunc($thumb_im,$info["path"].$thumbname);
  imagedestroy($im);
  imagedestroy($thumb_im);
  return $info["path"].$thumbname;  
 }

 function watermark($image,$pos=9,$watermarkimg="images/watermark.gif",$pct=65,$text="",$w_font=5,$w_color="#ff0000")
 {
  $imageinfo=$this->info($image);
  $source_w=$imageinfo["width"];
  $source_h=$imageinfo["height"];
  $imagecreatefunc="imagecreatefrom".($imageinfo["type"]=="jpg"?"jpeg":$imageinfo["type"]);
  $im=$imagecreatefunc($image);
  if(!empty($watermarkimg) && file_exists($watermarkimg)) //添加图片水印
  {
   $iswaterimage=true;
   $watermarkinfo=$this->info($watermarkimg);
   $width=$watermarkinfo["width"];
   $height=$watermarkinfo["height"];
   $watermarkcreatefunc="imagecreatefrom".($watermarkinfo["type"]=="jpg"?"jpeg":$watermarkinfo["type"]);
   $watermark_im=$watermarkcreatefunc($watermarkimg);
  }
  else //添加文字水印
  {
   $iswaterimage=false;
   if(!empty($w_color) && strlen($w_color)==7)
   {
    $r=hexdec(substr($w_color,1,2));
    $g=hexdec(substr($w_color,3,2));
    $b=hexdec(substr($w_color,5,2));
   }
   $temp = imagettfbbox(ceil($w_font*2.5), 0, "fonts/alger.ttf", $text);
   $width = $temp[2] - $temp[6];
   $height = $temp[3] - $temp[7];
   unset($temp);
  }
  switch($pos)
  {
   case 0:
    $wx = mt_rand(0,($source_w - $width));
    $wy = mt_rand(0,($source_h - $height));
    break;
   case 1:
    $wx = 5;
    $wy = 5;
    break;
   case 2:
    $wx = ($source_w - $width) / 2;
    $wy = 5;
    break;
   case 3:
    $wx = $source_w - $width-5;
    $wy = 5;
    break;
   case 4:
    $wx = 5;
    $wy = ($source_h - $height) / 2;
    break;
   case 5:
    $wx = ($source_w - $width) / 2;
    $wy = ($source_h - $height) / 2;
    break;
   case 6:
    $wx = $source_w - $width-5;
    $wy = ($source_h - $height) / 2;
    break;
   case 7:
    $wx = 5;
    $wy = $source_h - $height-5;
    break;
   case 8:
    $wx = ($source_w - $width) / 2;
    $wy = $source_h - $height-5;
    break;
   default:
    $wx = $source_w - $width-5;
    $wy = $source_h - $height-5;
    break;
  }
  if($iswaterimage)
  {
   if($imageinfo["type"] == "png") {
    imagecopy($im, $watermark_im, $wx, $wy, 0, 0, $width, $height);
   } else {
    imagecopymerge($im, $watermark_im, $wx, $wy, 0, 0, $width, $height, $pct);
   }
  }
  else
  {
   imagestring($im,$w_font,$wx,$wy,$text,imagecolorallocate($im,$r,$g,$b));
  }
  $imagefunc="image".($imageinfo["type"]=="jpg"?"jpeg":$imageinfo["type"]);
  $imagefunc($im,$image);
  imagedestroy($im);
  return true;
 }

 function info($image)
 {
  $info=array();
  $info["size"]=filesize($image);
  $imageinfo=getimagesize($image);
  $info["width"]=$imageinfo[0];
  $info["height"]=$imageinfo[1];
  $info["width_height"]=$imageinfo[3];
  $info["mime"]=$imageinfo["mime"];
  unset($imageinfo);
  $imageinfo=pathinfo($image);
  $info["path"]=$imageinfo["dirname"]."/";
  $info["type"]=strtolower($imageinfo["extension"]); //图片类型,不含"."
  $info["name"]=$imageinfo["filename"];
  unset($imageinfo,$name);
  $this->info=$info;
  return $info;
 }
}

 

本文来源:http://www.bbyears.com/ps/27794.html

猜你感兴趣

热门标签

更多>>

本类排行