多图片上传,和图片缩略图,生成缩略图,图片压缩
图片上传
/**
* [upfilepic2 图片上传,支持多图上传]
* @param [type] $pic [图片上传源]
* @param [type] $url [保存目录]
* @param integer $w [压缩最大宽度]
* @param integer $h [压缩最大高度]
* @return [type] [返回图片名称,多图用逗号分割]
*/
function upfilepic2($pic,$url,$w=600,$h=600){
$upload_file=$_FILES[$pic]["name"]; //获取文件名
$upload_tmp_file=$_FILES[$pic]["tmp_name"]; //获取临时文件名
$upload_filetype=$_FILES[$pic]["type"]; //获取文件类型
$upload_status=$_FILES[$pic]["error"]; //获取文件出错情况
foreach ($_FILES['fileToUpload']['error'] as $key => $error) {
if($error == 'UPLOAD_ERR_OK'){
if(is_uploaded_file($upload_tmp_file[$key])){
if(!function_exists('fileExtName')){
function fileExtName ($fStr){/*取得文件的扩展名并返回*/
$retval="";
$pt=strrpos($fStr,".");/*取得.句号在文件名中的位置*/
if($pt) $retval=substr($fStr,$pt+1,strlen($fStr)-$pt);/*从.句号后面开始,取三个字符,就是扩展名*/
return($retval);
}
}
$ext=fileExtName($_FILES[$pic]['name'][$key]);/*调用上面的函数,并取得的扩展名*/
$ext=strtolower($ext);
$upload_dir=realpath('.').$url; //指定文件存储路径
if(!file_exists($upload_dir)){
mkdir($upload_dir);
}
if(!in_array($ext,array("jpg","gif","png"))){
//return "exterror";
echo "<script>alert('上传的文件类型有误!');window.history.back();</script>";
exit;
}
$time=date('YmdHis').rand(1,1000);
$filename=$time.".".$ext;
$upload_path=$upload_dir."\\".$filename;
if(is_uploaded_file($upload_tmp_file[$key]) ){
if(move_uploaded_file($upload_tmp_file[$key],$upload_path)){
$upload_path=strtr($upload_path,"\\","/");
//$map_smallername=$upload_dir."\\"."s".$time.".".$ext;
makethumb($upload_path,$upload_path,$w,$h);
//makethumb($upload_path,$map_smallername,"240","180");
// return $filename;
if($key == 0){
$name = $filename;
}else{
$name .=",".$filename;
}
}else{
return "";
}
}
}else{
return "";
}
}
}
return $name;
}图片压缩图
function makethumb($srcFile,$dstFile,$dstW,$dstH,$rate=80,$markwords=null,$markimage=null)
{
$data = GetImageSize($srcFile);
switch($data[2])
{
case 1:
$im=@ImageCreateFromGIF($srcFile);
break;
case 2:
$im=@ImageCreateFromJPEG($srcFile);
break;
case 3:
$im=@ImageCreateFromPNG($srcFile);
break;
}
if(!$im) return False;
$srcW=ImageSX($im);
$srcH=ImageSY($im);
$dstX=0;
$dstY=0;
if ($srcW*$dstH>$srcH*$dstW)
{
$fdstH = round($srcH*$dstW/$srcW);
$dstY = floor(($dstH-$fdstH)/2);
$fdstW = $dstW;
}
else
{
$fdstW = round($srcW*$dstH/$srcH);
$dstX = floor(($dstW-$fdstW)/2);
$fdstH = $dstH;
}
$ni=ImageCreateTrueColor($fdstW,$fdstH);
$dstX=($dstX<0)?0:$dstX;
$dstY=($dstX<0)?0:$dstY;
$dstX=($dstX>($dstW/2))?floor($dstW/2):$dstX;
$dstY=($dstY>($dstH/2))?floor($dstH/s):$dstY;
$white = ImageColorAllocate($ni,255,255,255);
$black = ImageColorAllocate($ni,0,0,0);
imagefilledrectangle($ni,0,0,$dstW,$dstH,$white);// 填充背景色
ImageCopyResized($ni,$im,0,0,0,0,$fdstW,$fdstH,$srcW,$srcH);
if($markwords!=null)
{
$markwords=iconv("gb2312","UTF-8",$markwords);
//转换文字编码
ImageTTFText($ni,20,30,450,560,$black,"simhei.ttf",$markwords); //写入文字水印
//参数依次为,文字大小|偏转度|横坐标|纵坐标|文字颜色|文字类型|文字内容
}
elseif($markimage!=null)
{
$wimage_data = GetImageSize($markimage);
switch($wimage_data[2])
{
case 1:
$wimage=@ImageCreateFromGIF($markimage);
break;
case 2:
$wimage=@ImageCreateFromJPEG($markimage);
break;
case 3:
$wimage=@ImageCreateFromPNG($markimage);
break;
}
//imagecopy($ni,$wimage,500,560,0,0,88,31); //写入图片水印,水印图片大小默认为88*31
imagedestroy($wimage);
}
ImageJpeg($ni,$dstFile,$rate);
//ImageJpeg($ni,$srcFile,$rate);
imagedestroy($im);
imagedestroy($ni);
}本文作者: Liaodeity
本文链接: https://www.jianbaizhan.com/article/76
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!