首页 > php知识 > 可以生成缩略图的PHP上传图片类

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

2009年12月28日


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

[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;
}
}
}
?>
[/php]

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

作者: 石巍
原载: 10V
版权所有,转载时必须以超链接形式注明作者和原始出处及本声明。

本文链接: http://www.smartwei.com/php-image-upload.html

本文的评论功能被关闭了.