文件上传,缩略图,水印图上传
<?php
function uploadImg($name,$size=2097152,$type=array('image/png','image/jpeg','image/gif'),$rootPath='view/uploads/'){
$mes=''; //声明变量保存错误提示信息
switch ($_FILES[$name]['error']) //根据错误号赋值错误提示信息
{
case '1':
$mes='图片大小超过了php配置的图片限制';
break;
case '2':
$mes='图片大小超过了浏览器限制';
break;
case '3':
$mes='图片部分被上传';
break;
case '4':
$mes='没有找到要上传的图片';
break;
case '5':
$mes='服务器临时图片夹丢失';
break;
case '6':
$mes='图片写入服务器临时图片夹出错';
break;
}
if(!getimagesize($_FILES[$name]['tmp_name']))//如果用函数getimagesize获取不到图片的信息,表示不是真正的图片文件
{
$mes='不是真正的图片';
}
//$size=2*1024*1024;//设定允许上传文件的最大大小
if($_FILES[$name]['size']>$size)//如果上传文件的大小操作设定值
{
$mes='图片大小超过了网站的限定值';
}
//$type=array('image/png','image/jpeg','image/gif');//设定允许上传的文件类型
if(!in_array($_FILES[$name]['type'],$type))//如果上传的文件类型不在允许的类型数组中
{
$mes='图片类型不允许';
}
if($mes!='') //如果错误提示信息不为空
{
echo "<script>alert('".$mes."');history.go(-1);</script>";//给对应错误提示并返回上一页
exit;
}
//获取文件后缀名
$fileArr=explode('.',$_FILES[$name]['name']);//用函数explode将字符串通过符号'.'分割成数组
$maxIndex=count($fileArr)-1;//计算数组的最大索引
$extension=$fileArr[$maxIndex];//获取文件的扩展名
//获得新文件路径
//$rootPath='view/uploads/';//设定文件上传根目录
if(!file_exists($rootPath)) //如果文件(夹)不存在
{
mkdir($rootPath,777); //创建对应文件(夹),并设置权限为全部可读可写可操作
}
$file=$rootPath.time().rand(100000,999999).'.'.$extension;//生成新文件保存的路径
$mes=move_uploaded_file($_FILES[$name]['tmp_name'],$file);//将临时文件移动到指定路径保存
if($mes)//如果保存成功
{
return $file;//将文件路径返回
}
else//如果保存不成功
{
echo "<script>alert('图片上传失败');history.go(-1);</script>";//给错误提示并返回上一页
exit;
}
}
/**
* [thumbImg 生成缩略图]
* @param [字符串] $file [要生成缩略图的图片路径]
* @param [字符串] $tfile [生成的缩略图保存路径]
* @param [整数] $width [缩略图的宽度]
* @param [整数] $height [缩略图的高度]
* @return [字符串] [缩略图地址]
*/
function thumbImg($file,$tfile,$width=60,$height=30){
$img=getimagesize($file);//获取要生成缩略图的图片(原图)的属性
$mime=explode("/",$img['mime']);//将原图的mime类型属性分割成数组
$imagecreatefrom='imagecreatefrom'.$mime[1];//根据原图类型生成将图片转换成资源函数名
$image=$imagecreatefrom($file);//将原图读成资源
$im=imagecreatetruecolor($width, $height);//生成缩略图画布
imagecopyresized($im,$image,0,0,0,0,$width,$height,$img[0],$img[1]);//将原图按设定宽高缩放复制到画布上
$imageFun='image'.$mime[1];//根据原图类型生成输出图片函数名
$imageFun($im,$tfile);//将缩略图输出保存到指定路径
imagedestroy($image);//销毁图片资源
imagedestroy($im);//销毁图片资源
return $tfile;//将缩略图路径返回
}
/**
* [waterImg 图片添加水印]
* @param [字符串] $file [要添加水印的图片的路径]
* @param [字符串] $wfile [生成的水印图保存路径]
* @param [字符串] $water [水印地址]
* @return [字符串] [水印图地址]
*/
function waterImg($file,$wfile,$water='view/home/image/index/water.png'){
$img=getimagesize($file);//获取要添加水印的图片(原图)的属性
$mime=explode("/",$img['mime']);//将原图的mime类型属性分割成数组
$imagecreatefrom='imagecreatefrom'.$mime[1];//根据原图类型生成将图片转换成资源函数名
$image=$imagecreatefrom($file);//将要生成缩略图的图片(原图)读成资源
$wImg=getimagesize($water);//获取水印的属性
$wMime=explode("/",$wImg['mime']);//将原图的mime类型属性分割成数组
$wImagecreatefrom='imagecreatefrom'.$wMime[1];//根据原图类型生成将图片转换成资源函数名
$wImage=$wImagecreatefrom($water);//将要生成缩略图的图片(原图)读成资源
imagecopy($image,$wImage,($img[0]-$wImg[0])/2,($img[1]-$wImg[1])/2,0,0,$wImg[0],$wImg[1]);//进水印复制到原图中间
$imageFun='image'.$mime[1];//根据原图类型生成输出图片函数名
$imageFun($image,$wfile);//将水印图输出保存到指定路径
imagedestroy($image);//销毁图片资源
imagedestroy($wImage);//销毁图片资源
return $wfile;//将水印图路径返回
}
?>