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的地方也要相應的剪掉開始沒算進去的部分,
	//然後保存路徑是否存在的判斷等
}
?>


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