2011-05-10 72 views
-1

在下面的代碼中,我嘗試在上載後調整圖像大小。所有使用echo語句執行的檢查都會獲得正確的數據,但不會調整其大小並將其放入文件夾中。使用函數調整圖像大小的幫助

<?php 
    if (!$error) { 
// location where inital upload will be moved to 
$name = $_FILES['uploaded']['name']; 
$tname = $_FILES['uploaded']['tmp_name']; 
$folder = "uploads/" ; 
$dest_folder = "gallery/"; 
// find the type of image 
switch ($_FILES["uploaded"]["type"]) { 
case $_FILES["uploaded"]["type"] == "image/gif": 
    move_uploaded_file($_FILES["uploaded"]["tmp_name"],$folder.$name); 
    break; 
case $_FILES["uploaded"]["type"] == "image/jpeg": 
    move_uploaded_file($_FILES["uploaded"]["tmp_name"],$folder.$name);  
    break; 
case $_FILES["uploaded"]["type"] == "image/pjpeg": 
    move_uploaded_file($_FILES["uploaded"]["tmp_name"],$folder.$name); 
    break; 
case $_FILES["uploaded"]["type"] == "image/png": 
    move_uploaded_file($_FILES["uploaded"]["tmp_name"],$folder.$name);  
    break; 
case $_FILES["uploaded"]["type"] == "image/x-png": 
    move_uploaded_file($_FILES["uploaded"]["tmp_name"],$folder.$name);  
    break; 

default: 
    $error[] = 'Wrong image type selected. Only JPG, PNG or GIF accepted!.'; 
}///END OF SWITCH//// 
$resize = TRUE; 
}//END IF NO ERRORS/// 

if ($resize == TRUE) { 
    //echo "$folder<br />"; 
    //$file_name = $folder; 
    $file_name = $name; 
    $src_folder = $folder; 
    thumb($file_name,$folder,$dest_folder,$tname); 
} 
?> 

,這裏是功能我打電話:

function thumb ($file_name,$folder,$dest_folder,$tname) { 
list($src_width, $src_height, $imagetype) = getimagesize($folder.$file_name); 
$imagetype = image_type_to_mime_type($imagetype); 

$org_w = 500; 
//$dest_folder = "uploads/gallery/"; 
//$new_img = $dest_folder; 
echo "Original width is $src_width<br />"; 
echo "Orginal height is $src_height<br />"; 
echo "Image type is $imagetype<br />"; 
echo "Name of file is $file_name<br />"; 
echo "tmp_name is $tname<br />"; 
echo "New folder is $dest_folder<br />"; 

switch($imagetype) { 
    case "image/pjpeg": 
    case "image/jpeg": 
    case "image/jpg": 
      $source = imagecreatefromjpeg($tname); 
      echo "image is a jpg.<br />"; 
      break; 
    case "image/png": 
      $source = imagecreatefrompng($tname); 
      break; 
    case "image/gif": 
      $source = imagecreatefromgif($tname); 
      echo "image is a gif."; 
      break; 
    default: 
      return false; 
    } 

$org_h = ($src_height/$src_width)* $org_w; 
echo "h=$org_h<br />"; 
echo "w=$org_w<br />"; 
$tmp =imagecreatetruecolor($orig_w,$org_h); 
imagecopyresampled($tmp,$source,0,0,0,0,$orig_w,$org_h,$src_width,$src_height); 
    switch($imagetype) { 
    case "image/gif": 
    imagegif($tmp, $dest_folder.$file_name,80); 
    break; 
    case "image/pjpeg": 
    case "image/jpeg": 
    case "image/jpg": 
    imagejpeg($tmp, $dest_folder.$file_name,80); 
    break; 
    case "image/png": 
    case "image/x-png": 
    imagepng($tmp, $dest_folder.$file_name,80); 
    break; 
    } 

}

爲什麼不會調整其大小,並把它的文件夾中?卡住!!!

+2

你爲什麼不向代碼作者提問? – zerkms 2011-05-10 04:57:28

+0

任何錯誤信息? – ariel 2011-05-10 05:00:37

+0

其中函數imagecreatefromjpeg,更好的提供了細節代碼和錯誤 – AjayR 2011-05-10 05:12:37

回答

1

好吧第一,立即解決問題...

給出一個有效的MIME類型,你的腳本移動上傳的文件,以

'uploads/' . $name 

爲此,$tname不再是一個有效的路徑,但你仍然可以通過它到thumb()函數,它用於使用GD createfrom*函數之一來創建圖像資源。

這顯然不能工作,因爲沒有圖像在$tname


其他問題...

你的第一個開關塊可降至

switch ($_FILES["uploaded"]["type"]) { 
    case "image/gif": 
    case "image/jpeg": 
    case "image/pjpeg": 
    case "image/png": 
    case "image/x-png": 
     move_uploaded_file($_FILES["uploaded"]["tmp_name"],$folder.$name);  
     break; 
    default: 
     $error[] = 'Wrong image type selected. Only JPG, PNG or GIF accepted!.'; 
} 

在此行中

如果($調整== TRUE )

有一個很好的機會$resize是未定義的。你應該至少它初始化到false頂部

0

夫婦的問題,但是這是從正常工作停止拇指功能:

變化

$org_h = ($src_height/$src_width)* $org_w; 
echo "h=$org_h<br />"; 
echo "w=$org_w<br />"; 
$tmp =imagecreatetruecolor($orig_w,$org_h); 
imagecopyresampled($tmp,$source,0,0,0,0,$orig_w,$org_h,$src_width,$src_height); 

$org_h = ceil(($src_height/$src_width)* $org_w); 
echo "h=$org_h<br />"; 
echo "w=$org_w<br />"; 
$tmp = imagecreatetruecolor($org_w,$org_h); 
imagecopyresampled($tmp,$source,0,0,0,0,$org_w,$org_h,$src_width,$src_height); 
+0

好的謝謝你的幫助,我得到它的工作。我還有一個問題。如果我嘗試上傳1.8MB(3264 x 2448)的圖片,它會將我的圖片上傳到uploads文件夾,但不會調整它的大小。如果上傳限制在GD庫的大小上有限制? – Terry 2011-05-10 23:16:13