一款实现的生成小图功能的实现代码,有需要的朋友可以参考,每个都有详细的说明参数,php 上传图片自动生成缩略图实例代码如下:
- <form action="uploads.php" method="post" enctype="multipart/form-data">
- <input type='file' name='image'><br>
- <input type='submit' name='sub' value='提交'>
- </form>
-
-
-
- <?php
- class image_upload{
- private $srcimg;
- private $destimg;
- private $width;
- private $height;
- private $type;
- private $thumb_width;
- private $thumb_height;
- private $cut;
- private $tmp;
- private $error;
- private $im;
- private $new_name;
-
- function __construct($srcimg,$t_width,$t_height,$cut,$tmp,$error){
- $this->srcimg=$srcimg;
- $this->thumb_width=$t_width;
- $this->thumb_height=$t_height;
- $this->cut=$cut;
- $this->tmp=$tmp;
- $this->error=$error;
- $this->get_srcimg_type();
- $this->get_new_upload_name();
-
-
- }
-
- function img_upload(){
-
- $this->check_error($this->error);
- $this->in_type();
- $dst_dir='./images';
- if(!is_dir($dst_dir)){
- mkdir($dst_dir);
- echo "%%%<BR>";
- }
-
- if(is_uploaded_file($this->tmp)){
- if(move_uploaded_file($this->tmp, $this->new_name)){
- echo "文件上传成功<br>";
- return true;
- }else{
- echo '文件不能被移动,上传失败';
- exit;
- }
- }else{
- echo '文件上传可能被攻击';
- exit;
- }
-
- }
-
- function make_thumbnail(){
-
- $this->get_dest_imgpath();
- $this->make_im();
- $this->width=imagesx($this->im);
- $this->height=imagesy($this->im);
-
- $thumb_ratio=$this->thumb_width/$this->thumb_height;
- $ratio=$this->width/$this->height;
-
-
- if($this->cut==1){
- if($ratio>=$thumb_ratio){
- $img=imagecreatetruecolor($this->thumb_width, $this->thumb_height);
- imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_width, $this->thumb_height, $this->height*$thumb_ratio, $this->height);
- imagejpeg($img,$this->destimg);
- echo "缩略图生成成功";
- }else{
- $img=imagecreatetruecolor($this->thumb_width, $this->thumb_height);
- imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_width, $this->thumb_height, $this->width, $this->width/$thumb_ratio);
- imagejpeg($img,$this->destimg);
- echo "缩略图生成成功";
- }
- }else{
- if($ratio>=$thumb_ratio){
- $img=imagecreatetruecolor($this->thumb_height*$thumb_ratio, $this->thumb_height);
- imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_height*$thumb_ratio, $this->thumb_height, $this->width, $this->height);
- imagejpeg($img,$this->destimg);
- echo "缩略图生成成功";
- }else{
- $img=imagecreatetruecolor($this->thumb_width, $this->thumb_width/$thumb_ratio);
- imagecopyresampled($img, $this->im, 0, 0, 0, 0, $this->thumb_width, $this->thumb_width/$thumb_ratio, $this->width, $this->height);
- imagejpeg($img,$this->destimg);
- echo "缩略图生成成功";
- }
- }
- imagedestroy($this->im);
- imagedestroy($img);
- }
-
- private function check_error($error){
-
- if($error>0){
- switch($error){
- case 1:
- echo "上传文件的大小超过了PHP.INI文件中得配置<br>";
- break;
- case 2:
- echo "上传文件的大小超过了表单中的限制大小<br>";
- break;
- case 3:
- echo "只有部分文件被上传<br>";
- break;
- case 4:
- echo "没有文件被上传<br>";
- break;
- case 6:
- echo "php.ini中没有设置图片存放的临时未知<br>";
- break;
- case 7:
- echo "硬盘不可以写入,上传失败<br>";
- break;
- default:
- echo "未知错误";
- break;
- }
- }
- }
-
- private function get_srcimg_type(){
-
- $this->type=substr(strrchr($this->srcimg, '.'),'1');
- }
-
- private function in_type(){
-
- $type_arr=array('gif','jpg','png');
- if(!in_array($this->type, $type_arr)){
- echo "只支持PNG,GIF,JPG 三种类型的文件格式……,请重新上传正确的格式";
- exit;
- }
- }
-
- private function get_new_upload_name(){
-
- $this->new_name='images/'.date('YmdHis').'.'.$this->type;
-
- }
- private function make_im(){
-
- switch($this->type){
- case 'jpg':
- $this->im=imagecreatefromjpeg($this->new_name);
- break;
- case 'gif':
- $this->im=imagecreatefromgif($this->new_name);
- break;
- case 'png':
- $this->im=imagecreatefrompng($this->new_name);
- break;
- }
- }
- private function get_dest_imgpath(){
-
- $len1=strlen($this->new_name);
- $len2=strlen(strrchr($this->new_name,'.'));
- $len3=$len1-$len2;
- $this->destimg=substr($this->new_name,0,$len3).'_small.'.$this->type;
- }
-
- }
- print_r($_FILES);
- $file=$_FILES['image'];
- echo $file['name'];
- $uploads=new image_upload($file['name'], 120, 160, 1, $file['tmp_name'],$file['error'] );
- if($uploads->img_upload()){
- $uploads->make_thumbnail();
- }
-
- ?>
|