php 图片上传与裁剪


<?php
//print_r($_FILES["upfile"]);
$height = $_POST["h"];
$width =  $_POST["w"];
$pos_x = $_POST["x1"];
$pos_y = $_POST["y1"];

//image_file是你的input的name名字
if(@ is_uploaded_file($_FILES['image_file']['tmp_name'])){
	echo "111";
    $upfile=$_FILES["image_file"];
    //获取数组里面的值
    $name=$upfile["name"];//上传文件的文件名
    $type=$upfile["type"];//上传文件的类型
    $size=$upfile["size"];//上传文件的大小
    $tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径
    //判断是否为图片

    switch ($type){
        case 'image/pjpeg':$okType=true;
        break;
        case 'image/jpeg':$okType=true;
        break;
        case 'image/png':$okType=true;
        break;
    }

    if($okType){
        /**
         * 0:文件上传成功<br/>
         * 1:超过了文件大小,在php.ini文件中设置<br/>
         * 2:超过了文件的大小MAX_FILE_SIZE选项指定的值<br/>
         * 3:文件只有部分被上传<br/>
         * 4:没有文件被上传<br/>
         * 5:上传文件大小为0
         */
        $error=$upfile["error"];//上传后系统返回的值
        
        cut_img($tmp_name, $width, $height, $name, $type);
        $des = $name; //移动到目的地址
        //move_uploaded_file($tmp_name,$des);
        $destination=$name;
        echo "================<br/>";
        echo "上传信息:<br/>";
        
        if($error==0){
            echo "文件上传成功啦!";
            echo "<br>图片预览:<br>";
            echo "<img src=".$destination.">";     
        }elseif ($error==1){
            echo "超过了文件大小,在php.ini文件中设置";
        }elseif ($error==2){
            echo "超过了文件的大小MAX_FILE_SIZE选项指定的值";
        }elseif ($error==3){
            echo "文件只有部分被上传";
        }elseif ($error==4){
            echo "没有文件被上传";
        }else{
            echo "上传文件大小为0";
        }
    }else{
        echo "请上传jpg,gif,png等格式的图片!";
    }
}



function cut_img($img,$w,$h, $save_address, $type_img){ //要裁减的图片,宽度,高度
	
	echo $type_img;
	
	if($type_img == "image/pjpeg" || $type_img == "image/jpeg")
	    $s = imagecreatefromjpeg($img); 
	else if($type_img == "image/png")
	    $s = imagecreatefrompng($img);
	$w = imagesx($s)<$w?imagesx($s):$w;  //如果图片的宽比要求的小,则以原图宽为准
	$h = imagesy($s)<$w?imagesy($s):$h;
	$bg = imagecreatetruecolor($w,$h);        //创建$w*$h的空白图像
	
	if(imagecopy($bg,$s,0,0,0,0,$w,$h)){
		if(imagejpeg($bg,$save_address)){            //将生成的图片保存到img/new_img.jpg
			echo "success";
		}else{
			echo "false";
		}
	}else{
		echo "false";
	}
	
	//imagecopy ($dst_im,$src_im,$dst_x,$dst_y,$src_x,$src_y,$src_w,$src_h);
	 
	imagedestroy($s);                //关闭图片
	imagedestroy($bg);
	//这里只写了几个主要操作,你可以再加上开始裁减的座标,也就是imagecopy中的第5,第6两个参数,那么在判断$w和$h的地方也要相应的剪掉开始没算进去的部分,
	//然后保存路径是否存在的判断等
}
?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章