2012年2月15日 星期三

上傳圖片及PHP處理

處理端(接收來自form,並加以處理):
情境:多張圖片上傳


//解晰圖片
$image_type=getimagesize($_FILES['x'.$im]['tmp_name']);

switch ($image_type[2]){
    case "1"://gif
  $src = imagecreatefromgif($_FILES['x'.$im]['tmp_name']);
    break;
    case "2": //jpg
  $src = imagecreatefromjpeg($_FILES['x'.$im]['tmp_name']);
    break;
    case "3":
         $src=imagecreatefrompng($_FILES['x'.$im]['tmp_name']);
    break;
    default:
         echo '
ERROR!!請通知系統人員。
';       
  exit;
 }
壓縮圖檔1:
$file_name   = $_FILES['image'.$im]['name'];
  $src_w   = imagesx($src);
  $src_h   = imagesy($src);
     
  if($src_w > $src_h){
  $thumb_w = 150;
  $thumb_h = intval($src_h / $src_w * 150);
  }else{
  $thumb_h = 110;
  $thumb_w = intval($src_w / $src_h * 110);
  }
壓縮圖檔2:
// 建立縮圖
    $thumb = imagecreatetruecolor($thumb_w, $thumb_h);
    // 開始縮圖
    imagecopyresampled($thumb, $src, 0, 0, 0, 0, $thumb_w, $thumb_h, $src_w, $src_h);
    // 假設要長寬不超過90
    // 複製上傳圖片到指定 images 目錄
  
    $number   = strrpos($file_name,".");
    $orig_name  = substr($file_name,0,$number);
    $sub_file_name  = substr($file_name,$number+1);
    $new_file_name  = time()."_".$num.".".$sub_file_name;
    $dest_filename  = $upload_dir.$new_file_name;
       
    $sql="插入db所需要的資料";
       
    mysql_query($sql);
    $r=mysql_affected_rows();
圖檔儲存在伺服器

if($r>0) {
  switch ($image_type[2]){
     case "1"://gif
   imagegif($thumb, 'path'.$dest_filename);
   copy($_FILES['image'.$im]['tmp_name'], "../images/upload/" .$dest_filename);
     break;
     case "2": //jpg
   imagejpeg($thumb, "path".$dest_filename);
   copy($_FILES['image'.$im]['tmp_name'], "../images/upload/" .$dest_filename);
     break;
     case "3": //png
   imagepng($thumb, "path".$dest_filename);
   copy($_FILES['image'.$im]['tmp_name'], "../images/upload/" .$dest_filename);
     break;
   }
       
    }


form 的元素: enctype='multipart/form-data'
列出上傳的檔案資訊:
print_r($_FILES)
上傳多個標檔案--例子:
科目<input type='file' name='con_subject[]'><br>
                                    科目<input type='file' name='con_subject[]'><br>
                                    科目<input type='file' name='con_subject[]'><br>

接收端 第一個檔案: $_FILES['con_subject']['name'][0]
解釋:
getimagesize
imagecreatefromgif
imagepng

沒有留言: