文件上传并生成缩略图之一

简介: 文件上传是php程序中经常用到的,在上传文件之中需要考虑很多问题,例如上传文件的格式,大小,尺寸,预览 ,缩放切割,加水印,批量上传等等问题,  下面这段程序主要实现图像的上传预览功能且实现生成三种大小的图片(原图也保存了),这个程序主要是针对jpg格式的图片上传.

文件上传是php程序中经常用到的,在上传文件之中需要考虑很多问题,例如上传文件的格式,大小,尺寸,预览 ,缩放切割,加水印,批量上传等等问题,
 下面这段程序主要实现图像的上传预览功能且实现生成三种大小的图片(原图也保存了),这个程序主要是针对jpg格式的图片上传.

在文件上传的过程之中,需要预览一下生成的图片信息,下面的程序主要实现,图片上传之后生成相应的缩略图,

设计思想,上传图片成功后,新建一张空白图,把相应的图像信息写入空白图之中!

设计到的知识点:gb类库的函数,post的enctype属性


<?php    
  // 图片名称  设计思想都是把程序代码读出来,赋值到新建图片上去
    // $pic_name=date("dMYHis");  
    $pic_name=100; 	
  
    // 生成图片的宽度  // 生成图片的高度   
    $pic_width=100;       
    $pic_height=100;    
  
    function ResizeImage($im,$maxwidth,$maxheight,$name,$uploadfile){    
        //取得当前图片大小   
        $width = imagesx($im);    
        $height = imagesy($im);    
        //生成缩略图的大小   
        if(($width > $maxwidth) || ($height > $maxheight)){    
            $widthratio = $maxwidth/$width;        
            $heightratio = $maxheight/$height;     
            if($widthratio < $heightratio){    
                $ratio = $widthratio;    
            }else{    
                $ratio = $heightratio;    
            }    
            $newwidth = $width * $ratio;    
            $newheight = $height * $ratio;    
           
            if(function_exists("imagecopyresampled")){    
                $newim = imagecreatetruecolor($newwidth, $newheight);    
                imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);    
            }else{    
                $newim = imagecreate($newwidth, $newheight);    
                imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);    
            }    
            ImageJpeg ($newim,$uploadfile."/".$name . ".jpg");    //
            ImageDestroy ($newim);    
        }else{    
            ImageJpeg ($im,$name . ".jpg");    
        }    
    }    
  
    if($_FILES['image']['size']){    
        //echo $_FILES['image']['type'];  
			$dirnow = getcwd();
			$uploadfile = $dirnow.'/'.img;//存储路径
	  
        if($_FILES['image']['type'] == "image/pjpeg"||$_FILES['image']['type'] == "image/jpg"||$_FILES['image']['type'] == "image/jpeg"){    
            $im = imagecreatefromjpeg($_FILES['image']['tmp_name']);    
        }elseif($_FILES['image']['type'] == "image/x-png"){    
            $im = imagecreatefrompng($_FILES['image']['tmp_name']);    
        }elseif($_FILES['image']['type'] == "image/gif"){    
            $im = imagecreatefromgif($_FILES['image']['tmp_name']);    
        }   
	
        if($im){    
              //移动位置
			
            copy($_FILES['image']['tmp_name'], $uploadfile."/".$pic_name.'.jpg');				
            
            ResizeImage($im,100,100,$pic_name.'aa',$uploadfile);//生成第1张缩略图100*100
			ResizeImage($im,60,100,$pic_name.'bb',$uploadfile);//生成第2张缩略图60*100
			ResizeImage($im,170,100,$pic_name.'cc',$uploadfile);//生成第3张缩略图170*100
            ImageDestroy ($im);    
        }    
    }    
?>    
  
<img src="<? echo img."/".$pic_name.'.jpg'; ?>"><br><br>    
<form enctype="multipart/form-data" method="post" action="img.php">    
<br>    
<input type="file" name="image" size="50" value="浏览"><p>    
 
<input type="submit" value="上传图片">    
</form>   




   if($_FILES['image']['type'] == "image/pjpeg"||$_FILES['image']['type'] == "image/jpg"||$_FILES['image']['type'] == "image/jpeg"){    
            $im = imagecreatefromjpeg($_FILES['image']['tmp_name']);    
        }elseif($_FILES['image']['type'] == "image/x-png"){    
            $im = imagecreatefrompng($_FILES['image']['tmp_name']);    
        }elseif($_FILES['image']['type'] == "image/gif"){    
            $im = imagecreatefromgif($_FILES['image']['tmp_name']);    
        }  
把这段话换成$im = imagecreatefromjpeg($_FILES['image']['tmp_name']); 也就是把所用的图片格式全部转化成jpg格式,什么样的格式都可以上传

目录
相关文章
|
8月前
uiapp 上传图片
uiapp 上传图片
79 0
上传文件资料并生成缩略图
上传文件资料并生成缩略图
335 0
上传文件资料并生成缩略图
图片上传预览
     最近做需求时遇到的,上传的时候预览一下,一开始并没有想着用插件什么的,太复杂,只是个预览效果,不如自己写省事。前前后后也就几十行代码(包含头尾HTML、注释、输出调试),反正是比引用插件少多了,自己写也是个锻炼。
788 0
|
JavaScript 内存技术
|
Web App开发 JavaScript 内存技术