首页 > 语言 > PHP > 正文

php上传图片并生成缩位图代码

2024-09-04 11:44:26
字体:
来源:转载
供稿:网友

php上传图片并生成缩位图代码,我们时常要上传图片,但也要保留自己的版权所以就会用到图片加水印哦,下面的程序就是上传图片成功后再给图片加上你自己做的水印效果,实例代码如下:

  1. <?php 
  2.  
  3. class Image { 
  4.  var $imageResource = NULL; 
  5.  var $target = NULL; 
  6.  var $enableTypes = array(); 
  7.  var $imageInfo = array(); 
  8.  var $createFunc = ''
  9.  var $imageType = NULL; 
  10.  
  11.  /** 
  12.   * Construct for this class 
  13.   * 
  14.   * @param string $image 
  15.   * @return Image 
  16.   */ 
  17.  function Image($image = NULL) { 
  18.   //get enables 
  19.   if(imagetypes() & IMG_GIF) { 
  20.    $this->enableTypes[] = 'image/gif'
  21.   } 
  22.   if(imagetypes() & IMG_JPEG) { 
  23.    $this->enableTypes[] = 'image/jpeg'
  24.   } 
  25.   if (imagetypes() & IMG_JPG) { 
  26.    $this->enableTypes[] = 'image/jpg'
  27.   } 
  28.   if(imagetypes() & IMG_PNG) { 
  29.    $this->enableTypes[] = 'image/png'
  30.   } 
  31.   //end get 
  32.    
  33.   if($image != NULL) { 
  34.    $this->setImage($image); 
  35.   } 
  36.  } 
  37.  
  38.  /** 
  39.   * set a image resource 
  40.   * 
  41.   * @param string $image 
  42.   * @return boolean 
  43.   */ 
  44.  function setImage($image) { 
  45.   if(file_exists($image) && is_file($image)) { 
  46.    $this->imageInfo = getimagesize($image); 
  47.    $img_mime = strtolower($this->imageInfo['mime']); 
  48.    if(!in_array($img_mime$this->enableTypes)) { 
  49.     exit('系统不能操作这种图片类型.'); 
  50.    } 
  51.    switch ($img_mime) { 
  52.     case 'image/gif'
  53.      $link = imagecreatefromgif($image); 
  54.      $this->createFunc = 'imagegif'
  55.      $this->imageType = 'gif'
  56.      break
  57.     case 'image/jpeg'
  58.     case 'image/jpg'
  59.      $link = imagecreatefromjpeg($image); 
  60.      $this->createFunc = 'imagejpeg'
  61.      $this->imageType = 'jpeg'
  62.      break
  63.     case 'image/png'
  64.      $link = imagecreatefrompng($image); 
  65.      $this->createFunc = 'imagepng'
  66.      $this->imageType = 'png'
  67.      break
  68.     default
  69.      $link = 'unknow'
  70.      $this->imageType = 'unknow'
  71.      break
  72.    } 
  73.    if($link !== 'unknow') { 
  74.     $this->imageResource = $link
  75.    } else { 
  76.     exit('这种图片类型不能改变尺寸.'); 
  77.    } 
  78.    unset($link); 
  79.    return true; 
  80.   } else { 
  81.    return false; 
  82.   } 
  83.  } 
  84.  
  85.  /** 
  86.   * set header 
  87.   * 
  88.   */ 
  89.  function setHeader() { 
  90.   switch ($this->imageType) { 
  91.    case 'gif'
  92.     header('content-type:image/gif'); 
  93.     break
  94.    case 'jpeg'
  95.     header('content-type:image/jpeg'); 
  96.     break
  97.    case 'png'
  98.     header('content-type:image/png'); 
  99.     break
  100.    default
  101.     exit('Can not set header.'); 
  102.     break
  103.   } 
  104.   return true; 
  105.  }//开源代码Vevb.com 
  106.  
  107.  /** 
  108.   * change the image size 
  109.   * 
  110.   * @param int $width 
  111.   * @param int $height 
  112.   * @return boolean 
  113.   */ 
  114.  function changeSize($width$height = -1) { 
  115.   if(!is_resource($this->imageResource)) { 
  116.    exit('不能改变图片的尺寸,可能是你没有设置图片来源.'); 
  117.   } 
  118.   $s_width = $this->imageInfo[0]; 
  119.   $s_height = $this->imageInfo[1]; 
  120.   $width = intval($width); 
  121.   $height = intval($height); 
  122.    
  123.   if($width <= 0) exit('图片宽度必须大于零.'); 
  124.   if($height <= 0) { 
  125.    $height = ($s_height / $s_width) * $width
  126.   } 
  127.    
  128.   $this->target = imagecreatetruecolor($width$height); 
  129.   if(@imagecopyresized($this->target, $this->imageResource, 0, 0, 0, 0, $width$height$s_width$s_height)) 
  130.    return true; 
  131.   else  
  132.    return false; 
  133.  } 
  134.  
  135.  /** 
  136.   * Add watermark 
  137.   * 
  138.   * @param string $image 
  139.   * @param int $app 
  140.   */ 
  141.  function addWatermark($image$app = 50) { 
  142.   if(file_exists($image) && is_file($image)) { 
  143.    $s_info = getimagesize($image); 
  144.   } else { 
  145.    exit($image . '文件不存在.'); 
  146.   } 
  147.  
  148.   $r_width = $s_info[0]; 
  149.   $r_height = $s_info[1]; 
  150.  
  151.   if($r_width > $this->imageInfo[0]) exit('水印图片必须小于目标图片'); 
  152.   if($r_height > $this->imageInfo[1]) exit('水印图片必须小于目标图片'); 
  153.    
  154.   switch ($s_info['mime']) { 
  155.    case 'image/gif'
  156.     $resource = imagecreatefromgif($image); 
  157.     break
  158.    case 'image/jpeg'
  159.    case 'image/jpg'
  160.     $resource = imagecreatefromjpeg($image); 
  161.     break
  162.    case 'image/png'
  163.     $resource = imagecreatefrompng($image); 
  164.     break
  165.    default
  166.     exit($s_info['mime'] .'类型不能作为水印来源.'); 
  167.     break
  168.   } 
  169.    
  170.   $this->target = &$this->imageResource; 
  171.   imagecopymerge($this->target, $resource$this->imageInfo[0] - $r_width - 5, $this->imageInfo[1] - $r_height - 5, 0,0 ,$r_width$r_height$app); 
  172.   imagedestroy($resource); 
  173.   unset($resource); 
  174.  } 
  175.  
  176.  /** 
  177.   * create image 
  178.   * 
  179.   * @param string $name 
  180.   * @return boolean 
  181.   */ 
  182.  function create($name = NULL) { 
  183.   $function = $this->createFunc; 
  184.   if($this->target != NULL && is_resource($this->target)) { 
  185.    if($name != NULL) { 
  186.     $function($this->target, $name); 
  187.    } else { 
  188.     $function($this->target); 
  189.    } 
  190.    return true; 
  191.   } else if($this->imageResource != NULL && is_resource($this->imageResource)) { 
  192.    if($name != NULL) { 
  193.     $function($this->imageResource, $name); 
  194.    } else { 
  195.     $function($this->imageResource); 
  196.    } 
  197.    return true; 
  198.   } else { 
  199.    exit('不能创建图片,原因可能是没有设置图片来源.'); 
  200.   } 
  201.  } 
  202.  
  203.  /** 
  204.   * free resource 
  205.   * 
  206.   */ 
  207.  function free() { 
  208.   if(is_resource($this->imageResource)) { 
  209.    @imagedestroy($this->imageResource); 
  210.   } 
  211.   if(is_resource($this->target)) { 
  212.    @imagedestroy($this->target); 
  213.   } 
  214.  } 
  215. ?> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表