多图片上传,和图片缩略图,生成缩略图,图片压缩
图片上传
/** * [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 许可协议。转载请注明出处!