生成缩略图的PHP上传图片类

来源:互联网 发布:js 浮点数计算误差 编辑:程序博客网 时间:2024/06/10 03:19

做图片类网站的朋友可能都有自己上传图片的方式方法。这里给大家介绍一个php上传图片类,它可以验证上传文件是否为图片,图片的格式是否是网站所接受的;还可以生成指定大小的缩略图。具体方法如下所示:
<?php

class UploadComponent {

var $imageData = array();

 var $destinationDir = NULL;
 var $thumbDestinationDir = NULL;
 var $imageSize = array(500,500);
 var $cropImageSize = array(90,90);
 var $tag = 'width';
 var $imageExt = array('jpg','gif','png','bmp','jpeg');
 function initialize($arr)
 {
  $this->imageData = $arr;
 }
function isImageFile()
 {
  $ext = $this->imageExtension();
 if(in_array(strtolower($ext),$this->imageExt))
  {
   return true;
  }
  else
  {
   return false;
  }
 }


 function isValidImage()
 {
  if($this->imageData['error'] == 0 && $this->imageData['name'] <> '')
  {
   if($this->isImageFile())
   {
    return true;
   }
   else
   {
    return false;
   }
  }
  else
  {
   return false;
  }
 }


 function imageExtension()
 {
  return trim(substr($this->imageData['name'],strpos($this->imageData['name'],'.')+1,strlen($this->imageData['name'])));
 }


 function upload($thumb=false)
 {
  $this->__upload($this->destinationDir,$this->imageSize[0],$this->imageSize[1]);
  if($thumb)
  {
   $this->__upload($this->thumbDestinationDir,$this->cropImageSize[0],$this->cropImageSize[1]);
  }
 }


 function __upload($filethumb,$Twidth,$Theight)
 {
  list($width,$height,$type,$attr)=getimagesize($this->imageData['tmp_name']);
  switch($type)
  {
   case 1:
    $img = imagecreatefromgif($this->imageData['tmp_name']);
   break;
   case 2:
    $img=imagecreatefromjpeg($this->imageData['tmp_name']);
   break;
   case 3:
    $img=imagecreatefrompng($this->imageData['tmp_name']);
   break;
  }


  if($this->tag == "width") //根据宽度来压缩图片
  {
   $Theight=round(($height/$width)*$Twidth);
  }
  elseif($this->tag == "height") //根据高度来压缩图片
  {
   $Twidth=round(($width/$height)*$Theight);
  }
  else
  {
   if($width > $height)
    $Theight=round(($height/$width)*$Twidth);
   else
    $Twidth=round(($width/$height)*$Theight);
  }
  $thumb=imagecreatetruecolor($Twidth,$Theight);


  if(imagecopyresampled($thumb,$img,0,0,0,0,$Twidth,$Theight,$width,$height))
  {
   switch($type)
   {
    case 1:
     imagegif($thumb,$filethumb);
    break;
    case 2:
     imagejpeg($thumb,$filethumb,100);
    break;
    case 3:
     imagepng($thumb,$filethumb);
    break;
   }
   chmod($filethumb,0666);
   return true;
  }
 }
}
?>


这个类的使用方法很简单,将上传文件$_FILES['html表单中上传项的name']这个变量作为实例化这个类的变量传递给构造函数。之后就可以用其中的方法来处理图片了。当使用upload($thumb=false)函数的时候,$thumb=false为不生成缩略图,反之则生成缩略图;图片以及缩略图的大小可以通过 $imageSize、$cropImageSize这两个变量来指定,默认是500*500和90*90,朋友们可以根据自己的需求来改变他们。

0 0
原创粉丝点击