做图片类网站的朋友可能都有自己上传图片的方式方法。这里给大家介绍一个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,朋友们可以根据自己的需求来改变他们。