/** - *
- * @author zhao jinhan
- * @date 2014年1月13日11:54:30
- * @email xb_zjh@126.com
- *
- */
- header('Content-type:text/html; charset=utf-8');
- //定义缩略图的宽高
- define('THUMB_WIDTH',300);
- define('THUMB_HEIGHT',300);
- /**
- * 重新生成上传的文件名
- * @return string
- * @author zhao jinhan
- *
- */
- function _file_type($filetype = null){
- switch($filetype)
- {
- case "image/jpeg":
- $fileextname = "jpg";
- break;
- case "image/gif":
- $fileextname = "gif";
- break;
- case "image/png":
- $fileextname = "png";
- break;
- default:
- $fileextname = false;
- break;
- }
- return $fileextname?date('YmdHis',time()).'.'.$fileextname:false;
- }
- /**
- *
- * @param string $filename
- * @param string $width
- * @param string $height
- * @param string $quality
- * @param string $savepath
- * @return boolean
- */
- function _make_thumb($filename='', $width=THUMB_WIDTH, $height=THUMB_HEIGHT, $savepath='./upload'){
- if(file_exists($filename)){
- //上传图片的尺寸
- $imagesize=getimagesize($filename);
- $imagewidth=$imagesize[0];
- $imageheight=$imagesize[1];
- $mime = $imagesize['mime'];
- //宽高比例
- $ratio = $imagewidth/$imageheight;
- //新建一个背景图片
- $bgimg = imagecreatetruecolor($width, $height);
- $white = imagecolorallocate($bgimg, 255, 255, 255);
- //填充背景色为白色
- imagefill($bgimg,0,0,$white);
- if($mime == 'image/gif'){
- $im = @imagecreatefromgif($filename); /* Attempt to open */
- $outfun = 'imagegif';
- }elseif($mime == 'image/png'){
- $im = @imagecreatefrompng($filename); /* Attempt to open */
- $outfun = 'imagepng';
- }else{
- $im = @imagecreatefromjpeg($filename); /* Attempt to open */
- $outfun = 'imagejpeg';
- }
- if($ratio > 1){
- //宽度较大
- if($imagewidth > $width){
- //缩放图片到背景图片上
- $new_width = $width;
- $new_height = ($width*$imageheight)/$imagewidth;
- $bg_y = ceil(abs(($height-$new_height)/2));
- imagecopyresampled($bgimg, $im, 0, $bg_y, 0, 0, $new_width, $new_height, $imagewidth, $imageheight);
- }else{
- //复制图片到背景图片上
- $copy = true;
- }
- }else{
- //高度较大
- if($imageheight > $height){
- //缩放图片
- $new_height = $height;
- $new_width = ($height*$imagewidth)/$imageheight;
- $bg_x = ceil(($width-$new_width)/2);
- imagecopyresampled($bgimg, $im, $bg_x, 0, 0, 0, $new_width, $new_height, $imagewidth, $imageheight);
- }else{
- //复制图片到背景图片上
- $copy = true;
- }
- }
- if($copy){
- //复制图片到背景图片上
- $bg_x = ceil(($width-$imagewidth)/2);
- $bg_y = ceil(($height-$imageheight)/2);
- imagecopy($bgimg, $im, $bg_x, $bg_y, 0, 0, $imagewidth, $imageheight);
- }
- $ext = _file_type($mime);
- $outfun($bgimg, $savepath.'/'.$ext);
- imagedestroy($bgimg);
- return $savepath.'/'.$ext;
- }else{
- return false;
- }
- }
- if($_POST){
- $size = $_POST['size']?strtoupper(trim($_POST['size'])):'2M';
- $imgsize = $_FILES['img']['size']?$_FILES['img']['size']/(1024*1024):0;
- $imgwidth = $imgheight = $_POST['width-height']?intval($_POST['width-height']):300;
- //自定定义文件上传大小
- ini_set('upload_max_filesize',$size);
- $mathsize = str_replace('M','',$size);
- if($imgsize>$mathsize){
- echo "图片大小不得超过{$size}!";
- return;
- }
- if($file_name = _file_type($_FILES['img']['type'])){
- if($_FILES['img']['error'] == UPLOAD_ERR_OK){
- $savepath = 'upload/';
- if(!is_dir($savepath)){
- mkdir($savepath,0644);
- }
- //生成缩略图
- $thumb_file = _make_thumb($_FILES['img']['tmp_name'], $imgwidth, $imgheight, $savepath);
- //move_uploaded_file($_FILES['img']['tmp_name'],$savepath.$file_name);
- echo "生成后的图片为:";
- }else{
- echo $_FILES['img']['error'];
- return;
- }
- }else{
- echo "图片格式不正确,请上传jpg,gif,png的格式!";
- return;
- }
}else{ - echo <<
-
-
-
- 缩放图片保存成正方形
-
-
-
-
-
- EOT;
- }
|