生成缩略图的PHP上传图片类
来源:互联网 发布:js 浮点数计算误差 编辑:程序博客网 时间:2024/06/10 03:19
做图片类网站的朋友可能都有自己上传图片的方式方法。这里给大家介绍一个php上传图片类,它可以验证上传文件是否为图片,图片的格式是否是网站所接受的;还可以生成指定大小的缩略图。具体方法如下所示:
<?php
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,朋友们可以根据自己的需求来改变他们。
<?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
- 生成缩略图的PHP上传图片类
- php图片文件上传类 (附自动生成缩略图)
- php上传图片及缩略图生成
- PHP上传图片并生成缩略图_1
- PHP上传图片并生成缩略图_2
- php图片上传并生成缩略图
- php裁剪上传图片生成缩略图
- php 图片操作类,支持生成缩略图,添加水印,上传缩略图
- 上传图片生成缩略图
- 上传图片生成缩略图
- 上传图片生成缩略图
- 上传图片生成缩略图
- 上传图片生成缩略图
- 图片上传生成缩略图
- 上传图片生成缩略图
- php----图片上传封装类:单张,多张图片上传,生成缩略图
- jquery php ajax多图片上传.上传进度,生成缩略图
- 上传图片时生成缩略图的函数
- Oracle 加索引、 查看sort_area_size、workarea_size_policy等
- Singleton设计模式
- 在服务器上的tomcat发布WEB项目供外网访问
- fibnacci数列模板
- 在一台主机上安装多个mysql服务
- 生成缩略图的PHP上传图片类
- 如何成为一个优秀的测试工程师
- jquery的each()详细介绍
- 兔子--提高Android SDK更新速度
- android 反编译和代码解读
- 项目管理笔记
- 帮朋友的朋友做的作业题额。。就当练习吧。。<assignment4>
- IOS GCD Timer
- 数学之路-数据分析进阶-总体方差检测